這裏我的JSON對象:AngularJS ngOptions按部就班地進行,整個對象不設置爲ngModel
$scope.todos = [{
name: 'angular',
field: ['a', 'b', 'c', 'd'],
id: 1
}, {
name: 'asd',
field: ['a', 'b', 'c', 'd', 'e'],
id: 2
}];
我給選擇爲:
<select ng-model="dashboard.type" ng-options="item as item.name for item in todos track by item.name"></select>
選擇一個選項,現在,當我想另一個選擇其中迭代以前選擇ngModel
。接下來的樣子:在我的腳本,它使用track by
選擇選項並保存:
<select ng-model="dashboard.label" ng-options="item as item for item in dashboard.type.field"></select>
它,當我手動選擇的選項,但是當他們在dashboard.type值($scope.dashboard.type.name = 'qwe'
如)工作正常在dashboard.type
中,不是保存整個對象,而是保存track by
選項中使用的值。
價值dashboard.type:
- 當我選擇手動選項:
{"name":"qwe","field":["a","b","c","d","f"],"id":3}
- 在按部就班地進行使用:
{"name":"qwe"}
注:我不能使用track by item
。它必須是對象item
的財產。它可以是name
或id
。
這是plnkr。
編輯:
正如許多指出的那樣,我想澄清,我不能初始化對象todos
列表中的任意值。這是因爲dashboard.type.name
的值每次都會有所不同,並且todos
列表從10到100個對象不等。現在我必須遍歷列表todos
檢查todos[index].name==someName
並分配相關的對象。我正在積極嘗試避免這種情況(因爲必須有更好的方法)。
注:我也使用ng-change
嘗試和實際的對象分配給dashboard.type.name
但是,只有當選擇手動選擇,這似乎已經工作正常工作。當使用track by
時,它不分配對象。
重要提示:$scope.dashboard.type.name = 'qwe'
只是一個例子。每次加載頁面時,$scope.dashboard.type.name
的值可能會發生變化。 PS:另外我應該早些提到這一點。謝謝,我的壞!
只是改變你的初始化像這 $ scope.dashboard = {}; \t $ scope.dashboard.type = {} \t $ scope.dashboard.type = { name:'qwe', field:['a','b','c','d','f '], id:3 }; –
如果我可以做的最後一部分沒有遍歷'todos'列表比是的,它會工作。 PS:我已經更新了這個問題,請再次檢查。 –
在這種情況下,在ng-init上調用一個函數並根據你想要的值進行初始化 –