AngularJs - 控制器中的绑定复选框集合

时间:2013-03-15 16:07:22

标签: angularjs

我的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并且服务器很满意。]

3 个答案:

答案 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并且服务器很满意。]