我有一个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;
任何人都能解释为什么会发生这种情况以及如何解决这个问题?
答案 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