我问过一个问题 How to associate objects as models using ng-options in angularjs
我得到了一个非常快的答案。我的后续问题是响应使用<select mutiple>
来处理子对象数组。
您可以在http://plnkr.co/edit/FQQxrSE89iY1BnfumK0A?p=preview
处使用<select>
查看我想要的实际示例
如何在重复<input type='checkbox'>
对象数组中的项目时使用<select>
(而不是ng:model="shirt.colors"
)来处理该对象数组,即colors
。
原因,这看起来如此复杂,我必须管理一个对象数组而不是值数组...例如,如果你看小提琴,有color
个对象和{ {1}}具有多种颜色的对象。
如果shirt
对象发生更改,则应更改color
个对象中相应的color
个对象。
提前谢谢。
答案 0 :(得分:18)
您只需要在您的范围中使用一些中间值,并将复选框绑定到它。在你的控制器中 - 注意它的变化,并根据它的价值手动重建shirt.colors。
<div ng-repeat='shirt in shirts'>
<h3>Shirt.</h3>
<label>Size: <input ng-model='shirt.size'></label><br/>
<label>Colors:</label>
<label ng-repeat="color in colors">
{{color.label}} <input ng-model="selection[$parent.$index][$index]" type="checkbox"/>
</label>
</label>
</div>
在你的控制器中:
$scope.selection = [[],[]];
$scope.$watch('selection', function () {
console.log('change', $scope.selection);
angular.forEach($scope.selection, function (shirtSelection, index) {
$scope.shirts[index].colors = [];
angular.forEach(shirtSelection, function (value, index2) {
if (value) $scope.shirts[index].colors.push($scope.colors[index2]);
});
});
}, true);
您可以在此处进行测试:http://plnkr.co/edit/lh9hTa9wM5fkh3nT09RJ?p=preview