这是我的 json 对象:
$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>
Now when an option is chosen i want another select which iterates upon ngModel
of previous select. 下一个看起来像:
<select ng-model="dashboard.label" ng-options="item as item for item in dashboard.type.field"></select>
当我手动选择选项时它工作正常但是当它们是$scope.dashboard.type.name = 'qwe'
我的脚本中的dashboard.type(例如:)中的值时,它用于track by
选择选项并将其保存在dashboard.type
,而不是保存整个对象它只是保存使用的值在track by
选项中。
仪表板的值。类型:
- 当我手动选择选项时:
{"name":"qwe","field":["a","b","c","d","f"],"id":3}
- 当使用 track by 时:
{"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:我也应该早点提到这个。对不起,我的错!