我的Html:
<ol ng-model="gcwr.checked" ng-repeat="gcwr in gcwrs" id="gcwr">
<label class="checkbox" for="{{gcwr.Id}}">
{{gcwr.Description}}
<input ng-model="gcwr.checked" type="checkbox" /></label>
</ol>
我的容器控制器:
// initialize section
$scope.gcwrs = API.GetGCWRs();
// in the save/submit function
var newContainer = $scope.newContainer;
var myGCWRS;
var tmp = angular.forEach($scope.gcwrs, function (gcwr) {
myGCWRS += gcwr.checked ? gcwr : null;
});
newContainer.GCWRs = [
angular.copy(myGCWRS)
];
问题:
GCWR填写在表单中,但是我在提交/保存功能广告中收集已检查的gcwrs时出错了,并将该集合添加到newContainer。
有什么想法吗?
- 在角度世界中永远不会是沉闷的一天:(
解决:
屁股多么痛苦!!! TGIF,因为现在我有理由。
以下是解决方案:(抱歉,我从原帖中更改了一些名称)
var selectedGCWRs = [];
var tmp = angular.forEach($scope.gcwrs, function (gcwr) {
if (gcwr.checked) {
selectedGCWRs.push(gcwr);
}
});
newContainer.GCWRs = selectedGCWRs;
.... then go on and save the newContainer.
[注意:如果我使用angular.copy,那么角度在ng-repeat中创建的$$ hashkeys就不会被删除;因此服务器会拒绝这个集合,因为它会有一个额外的属性,即$$ hashkey,它与服务器上的模型类不匹配。只需将集合传递给容器,就可以删除$$ hashkeys并且服务器很满意。]
答案 0 :(得分:0)
我认为你需要使用
var myGCWRS = [];
var tmp = angular.forEach($scope.gcwrs, function (gcwr) {
if(gcwr.checked) {
myGCWRS.push(gcwr);
}
});
newContainer.GCWRs = angular.copy(myGCWRS);
答案 1 :(得分:0)
我不确定你是否需要一个新容器。使用angular的双向绑定,gcwrs数组始终是最新的。当您准备好处理所选元素时,只需查看数组。
这是一个展示:http://plnkr.co/edit/DxQY74XBxzOU66X18xqH
的plnkr请注意,对象状态会随着勾选/取消勾选而更改。
答案 2 :(得分:0)
<强>解决:强>
屁股多么痛苦!!! TGIF,因为现在我有理由。
以下是解决方案:(抱歉,我从原帖中更改了一些名称)
var selectedGCWRs = [];
var tmp = angular.forEach($scope.gcwrs, function (gcwr) {
if (gcwr.checked) {
selectedGCWRs.push(gcwr);
}
});
newContainer.GCWRs = selectedGCWRs;
....然后继续保存newContainer。
[注意:如果我使用angular.copy,那么角度在ng-repeat中创建的$$ hashkeys就不会被删除;因此服务器会拒绝这个集合,因为它会有一个额外的属性,即$$ hashkey,它与服务器上的模型类不匹配。只需将集合传递给容器,就可以删除$$ hashkeys并且服务器很满意。]