angularjs复选框不更新更新模型

时间:2016-06-30 06:53:15

标签: angularjs

我正在尝试更新复选框值,当我尝试选中或取消选中复选框时,它不会更新ng-model值,而是持久性

<tr height="44" ng-repeat="res in resources">
    <td>{{res.project}}</td>
    <td>{{res.resource}}</td>
    <td><input type="text" placeholder="Resource Weightage" ng-model="res.alloc" ></td>
    <td>
        <input  ng-checked="res.add==1 || isAllSelected" type="checkbox" checklist-value="res.add" checklist-model="res.add">
    </td>
    <td>
        <input  ng-checked="res.edit==1 || isAllSelected" type="checkbox" checklist-value="res.edit" checklist-model="res.edit">
    </td>
    <td>
        <input  ng-checked="res.delete==1 || isAllSelected"  type="checkbox" checklist-value="res.delete" checklist-model="res.delete" >
    </td>
    <td>
        <input  ng-checked="res.view==1 || isAllSelected" type="checkbox"  checklist-value="res.view" checklist-model="res.view">
    </td>
</tr>

Screen Shot of Request is here

3 个答案:

答案 0 :(得分:0)

根据docs of checklist directive

必须设置为包含值的checklist-model数组,但在checklist-value中需要将要推送到数组的值。

换句话说它应该是那样的

 <input type="checkbox"  checklist-value="'some value'" checklist-model="someTargetArray">

我想你应该使用简单的复选框和ng-model,如

<input  type="checkbox"  ng-model="res.view">

答案 1 :(得分:0)

我假设使用this插件。所以根据链接中的示例,您需要在checklist-value中传递输入机器人的值,而您不需要ng-checked

我假设您希望res在选中复选框时包含['add','edit','delete','view']这样的数组。

<tr height="44" ng-repeat="res in resources">
            <td>{{res.project}}</td>
            <td>{{res.resource}}</td>
            <td>
             <input type="text" placeholder="Resource Weightage" ng-model="res.alloc"></td>
            <td>
             <input type="checkbox" checklist-value="'add'" checklist-model="res">
            </td>
            <td>
             <input type="checkbox" checklist-value="'edit'" checklist-model="res">
            </td>
            <td>
             <input type="checkbox" checklist-value="'delete'" checklist-model="res" >
            </td>
            <td>
             <input type="checkbox" checklist-value="'view'" checklist-model="res">
            </td></tr>

答案 2 :(得分:0)

嘿伙计们感谢您的支持,但遗憾的是没有解决方案对我有用,而我尝试了另一种对我有用的解决方案

在视图中

<input ng-true-value='1' ng-false-value="0"  ng-checked="res.add==1 || isAllSelected" value="1" ng-change="update($index,res,'a')" type="checkbox" ng-model="res.add">

并在控制器中

$scope.update = function(index,data,crud) {

    if (crud=="a") {
        $scope.resources[index].add = data.add;
    } else if (crud=="e") {
         $scope.resources[index].edit = data.edit;
    } else if (crud=="d") {
         $scope.resources[index].delete = data.delete;
    } else if (crud=="v") {
        $scope.resources[index].view = data.view;
    }

};

这解决了我的问题,现在我可以获得复选框的更新值。