看看我的例子 http://plnkr.co/edit/21ewxVIaRm4IHyF3TgoD?p=preview
我需要将选项对象存储为ng-model,因此我用于ng-options ng-options="m as m.name for m in list"
但是,如果我手动将ng-model设置为对象,则默认情况下它不会在下拉列表中选择正确的选项。它正确存储数据,但只有在使用此表达式ng-options="m.name as m.name for m in list"
时才预先选择一个选项,但这会在模型上存储一个字符串而不是选项对象。
我做错了什么?
目标:
答案 0 :(得分:1)
对于您使用的版本(1.0.8),您必须使用循环解析对象:
$scope.selected = {
name:"Something"
}
$scope.setSelected = function() {
angular.forEach($scope.list, function(item) {
if (item.name == $scope.selected.name) {
$scope.selected = item;
}
})
}
$scope.setSelected();
更新的版本,track by
支持ng-options
语法。所以你可以写:
ng-options="m.name for m in list track by m.name"
这将设置与谓词匹配的对象。
答案 1 :(得分:0)
正如Davin Tryon已经提到的,使用track by是正确的方法,但是,我看到有些人使用track by和'作为'在相同的ng-options字符串中,这将不起作用。使用track by也应该满足使用'作为'
的需要