angularjs - 如何在 angularjs 中使用 ng-options 将对象关联为模型

标签 angularjs

假设我有两个对象:颜色和衬衫。

每件衬衫可以有多种属性以及多种颜色,这基本上是一组颜色对象。

function MyCntrl($scope) {
    $scope.colors = [
        {
            label:"Red",
            value:"r-e-d",
            available:true
        },
        {
            label:"Blue",
            value:"b-l-u-e",
            available:false
        }   
    ];

    $scope.shirts=[{
        size:"M",
        cost:100,
        colors:[ ]
    }
    ]
}

如何使用 ng-optionsshirts.color 添加/删除 color 对象?

我想将 scope.color 对象关联到 scope.shirts.color 对象,这样如果我更改颜色名称或颜色代码之类的内容,那么shirts.colors 中关联的 color 对象中的相应项目也应该自动更新。

根据我对 ng-optionsng-model 的了解,我将不得不为颜色创建新对象并根据在选择框,但这些对象将独立于颜色对象,更改颜色对象不会更新衬衫中的相应对象。

预先感谢您的回复。

最佳答案

你可以直接使用ng-options:

Color: <select multiple ng:model="shirt.colors" ng:options="c.value as c.label for c in colors"></select>

这是一个 Plunker:http://plnkr.co/edit/FQQxrSE89iY1BnfumK0A?p=preview

更新

关于源 colors 的编辑:如果在衬衫的颜色中你只存储值,那么将很难检测到项目被更改的内容并在选项中重新选择它(更改选择的项目取消选择因为 AngularJS 不知道改变的原因)。

作为解决方法,您可以选择对象,而不是值。我已经更新了 plunker。

关于angularjs - 如何在 angularjs 中使用 ng-options 将对象关联为模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14751674/

相关文章:

angularjs - 如何使用Angular-Material获得全高sidenav

javascript - 身份验证 - 调用 $http 的 .then() 成功回调而不是错误回调

android - 根据设备和操作系统拆分 Cordova View

javascript - ng-click 触发 app.js 中的函数不起作用

javascript - 使用 AngularJS 淡出闪烁按钮

javascript - 指令不生成模板

javascript - AngularJs - 在指令 Controller 中使用自定义过滤器

javascript - AngularJS 和 WebSockets 之外

javascript - 我们可以从 Angular Controller 获取 aspx.cs 页面中的数据吗?

jquery - AngularJS:如何调用 jQuery 函数