我有一个看起来像这样的选择:
{{vm.selected}}
{{vm.items}}
<select ng-options="item.value as item.label for item in vm.items track by item.value" ng-model="vm.selected">
</select>
我的项目数组如下所示:
this.items = [
{
"label":"Foo Bar",
"value":"foobar"
},
{
"label":"Baz Quux",
"value":"quux"
}
];
且项目vm.selected
是“foobar”
两个绑定都在select上方正确显示,但未选中该项。当我检查select in developer工具时,我将其作为第一个选择的项目:
<option value="?" selected="selected"></option>
此外,当我使用ng-click="vm.selected = 'quux'"
点击此元素时,没有任何更改。 {{vm.selected}}
始终更新。有人知道什么是错的吗?
答案 0 :(得分:1)
根据official ngOption documentation
,您的ng-option表达式无效引用
但这不起作用:
item.subItem as item.label for item in items track by item.id
所以你的
ng-options="item.value as item.label for item in vm.items track by item.value"
无效。
而是表达以下格式:
item as item.label for item in items track by item.id
答案 1 :(得分:1)
track by item.value
存在问题。如果删除它,您可以看到在选择值后,vm.selected
将正确显示并且选择有效。