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

标签 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,选择字段中没有预先选择的组。

看到这个 fiddle http://jsfiddle.net/Jy643/1/

有什么想法可以解决这个问题吗?

最佳答案

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

关于angularjs - 选择多个对象并保存到 ng-model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20305489/

相关文章:

routing - 错误 : Unknown provider: $elementProvider <- $element

javascript - ng-repeat 问题和 html 表

AngularJS - 如何在 ng-Repeat 中引用属性名称

angularjs - 有没有办法在 AngularJS groupBy 表达式中转义点符号?

javascript - 将服务值直接调用到指令中

node.js - nginx 配置 - 将 http 转发到 https,将 www.domain.tld 转发到 domain.tld 和两个子域

javascript - 如何仅从内部修改指令范围属性

javascript - Angularjs $location 第一次不会触发,下次使用旧值

javascript - AngularJs ng-repeat 在小组课上

angularjs - ngRepeat 中的 $first