选择多个对象并保存到ng-model

时间:2013-11-30 20:50:30

标签: angularjs angularjs-ng-repeat

HTML:

<select ng-model="contact.groups" 
        ng-options="item.id as item.name for item in groups" 
        ng-multiple="true" multiple>

        <option value="">Choose groups</option>
</select>

contact.groups包含分配给联系人的组列表:

[
   {
     id: 145,
     name: 'FooBar
   }
]

groups是所有可用群组的列表。第一个问题是ng-options中的item.id不显示组的正确ID,但似乎从0(列表中的第一组),1(列表中的第二组)等计算

第二个问题是不考虑contact.groups,选择字段中没有预先选择的组。

请参阅此小提琴http://jsfiddle.net/Jy643/1/

任何想法如何处理这个问题?

2 个答案:

答案 0 :(得分:2)

ngOptions通过严格相等来比较对象,这意味着您的模型组需要引用$scope.groups中的一个组:

function MyCtrl($scope) {

    $scope.test = "Das ist ein Test";
    $scope.groups = [{id: 142, name: 'Foo'},{id: 143, name: 'Bar'}, {id: 144, name: 'Bas'}];

    $scope.contact = {name: 'Bob', groups: [{id: 143}]};
    $scope.contact = {name: 'Bob', groups: $scope.groups[1]};
}

PLUNKER

答案 1 :(得分:1)

尝试将'track by tracking_expression'用于ngOptions(也在ngRepeat上运行),允许通过expresion而不是reference来匹配对象。 Angular Select Documentation