AngularJS选择元素值是一个对象,为什么?

时间:2014-12-22 04:04:41

标签: javascript html json angularjs

我有一个JSON对象,如:

{
    "9000A": {
        "LOCname":"A Location"
        "LOCid":"9000A"
    },
    "2700C": {
        "LOCname":"C Location"
        "LOCid":"2700C"
    },
    "7600B": {
        "LOCname":"B Location"
        "LOCid":"7600B"
    }
}

我需要按LOCname对其进行排序以显示在选择列表中,我使用自定义过滤器将JSON对象转换为数组:

<select name="location" ng-model="formData.location" ng-options="loc.LOCname for loc in (locations | json2array | orderBy:'LOCname') track by loc.LOCid">
    <option style="display:none" value="" disabled selected>Choose a location.</option>
</select>

这很好用我的选项如下:

<option value="9000A" label="A Location">A Location</option>
<option value="7600B" label="B Location">B Location</option>
<option value="2700C" label="C Location">C Location</option>

我的问题是formData.location现在等于一个对象:

{"LOCname":"A Location","LOCid":"9000A"}

预期的结果是formData.location将等于&#34; 9000A&#34;

任何人都能解释为什么会发生这种情况以及如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

因为您使用ng-options

的方式

如果您使用ng-options作为

ng-options="color.LOCid as loc.LOCname for loc in (locations |..."

您可以选择ID

解释

  

color.LOCid作为loc的loc.LOCname(locations | ...

     

location是我们需要迭代的数组

     

loc是一个单独的对象   'loc.LOCname'的loc.LOCname是我们需要显示的值

     

color.LOCid in是所选选项的值

     

(如果你没有设置“color.LOCid in”)默认选择你案例中的整个对象loc