2016-12-06 82 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