2016-12-06 76 views
2

我有一个选择,看起来像这样:角度选择不响应NG-模型变化

{{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是“ foob​​ar“

两个绑定都显示在选择正确的上方,但未选择该项目。当我检查选择的开发人员工具我有这个作为第一个选择项:

<option value="?" selected="selected"></option> 

此外,当我使用与ng-click="vm.selected = 'quux'"没有这个元素上点击改变。 {{vm.selected}}始终更新。任何人都有线索有什么不对?

+1

这应该工作正常。你可以在jsfiddle中重现吗? – devqon

+0

而不是ng-click =“vm.selected ='quux'”,为什么不试试: ng-init =“vm.selected = items [2]'” – MSH

+0

直接绑定到集合中的对象:[文档】(https://docs.angularjs.org/api/ng/directive/ngOptions#complex-models-objects-or-collections-) –

回答

1

你NG选项表达根据official ngOption documentation

报价

将无法​​正常工作,但是这不会工作:

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