3

color と shirt という 2 つのオブジェクトがあるとします。

各シャツは複数のプロパティと、基本的には色オブジェクトの配列である複数の色を持つことができます。

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追加/削除するにはどうすればよいですか?colorshirts.color

色の名前や色のコードなどを変更すると、関連付けられたオブジェクトの対応するアイテムも自動的に更新されるように、scope.colorオブジェクトをオブジェクトに関連付けたいと思います。scope.shirts.colorcolorshirts.colors

ng-optionsとについて私が知っていることからng-model、色の新しいオブジェクトを作成し、選択ボックスで選択されているものに基づいてその値を設定する必要がありますが、これらのオブジェクトは色オブジェクトから独立しており、色オブジェクトを変更しても対応するオブジェクトは更新されませんシャツのオブジェクト。

ご回答ありがとうございます。

4

1 に答える 1

6

ng-optionsそのために直接使用できます:

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

ここにプランカーがあります: http://plnkr.co/edit/FQQxrSE89iY1BnfumK0A?p=preview

アップデート

ソースの編集についてcolors:シャツの色に値だけを保存すると、アイテムが変更されたものを検出してオプションで再選択するのが非常に難しくなります(AngularJSは変更の理由がわからないため、選択されたアイテムが選択解除されます)。

回避策として、値ではなくオブジェクトを選択できます。プランカーを更新しました。

于 2013-02-07T14:36:05.597 に答える