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

时间:2013-02-07 12:58:10

标签: 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-options向/ color添加/删除shirts.color个对象?

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

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

提前感谢您的回复。

1 个答案:

答案 0 :(得分:6)

您可以直接使用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。