select2 中的 Angular ng-options - 设置值属性

2024-03-16

我有一系列国家:

var countriesList: [
                {name: "Israel", code: "IL"},
                {name: "India", code: "IN"},
                {name: "Andorra", code: "AD"}
            ]

以及一系列选定的国家/地区:

    selectedCountries: [
                    {
                        country:"IL"
                    }
                ] 

我使用 select2 来选择国家/地区。 我从 ng-repeat 开始生成<options/> tag:

 <select
    id="countriesList"
    ui-select2
    multiple
    ng-model='data.selectedCountries'
    data-placeholder='Choose or Search for Countries'
    name='locations'
    ng-change='geoTargetingChanged()'>

       <option ng-repeat="country in data.countriesList" value="{{country.code}}">{{country.name}}</option>                
</select>

这种方法效果很好,但它导致表格$dirty就在开始时。 所以我开始使用`ng-options-机制(在阅读之后这个答案 https://stackoverflow.com/questions/12139152/how-to-set-value-property-in-angularjs-ng-options):

<select
            id="countriesList"
            ui-select2
            multiple
            ng-model='data.selectedCountries'
            data-placeholder='Choose or Search for Countries'
            name='locations'
            ng-change='geoTargetingChanged()'
            ng-options="country.code as country.name for country in data.campaignSettings.countriesList">
           <option></option>
</select>

现在的问题是项目的值不是国家代码,而是它们在数组中的索引。

我错过了什么吗?


这里有一个plunker http://plnkr.co/edit/pFkY5f?p=preview.

尽管我确实更改了格式,但我没有看到任何问题selectedCountries是国家/地区代码的数组(["IL", ...])而不是您提供的数据结构([{country:"IL", ...}]).

Angular 确实使用索引作为值来生成选项,但是ngModel将包含适当的值。如果您使用 select 进行表单提交,则应该使用ngModel而不是 HTML 中选择的数据。如果您需要将页面上选择的数据放入表单中,您可以将选择的值放入ngModel到隐藏的表单元素中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

select2 中的 Angular ng-options - 设置值属性 的相关文章

随机推荐