在AngularJS中选择All指令

时间:2015-04-08 04:50:36

标签: angularjs angularjs-directive

我在我的应用程序中使用Checklist model指令。我有问题,如果 -

  • 我点击选择所有按钮,虽然它写了数组但不是 选择复选框。与Uncheck All相同的问题虽然它清空了 模型,但它不取消选中复选框。
  • 如果我选中2或3个随机复选框并单击全选按钮,则不会选中所有复选框。

虽然它的写入值为pushArray。但问题是检查和取消选中复选框。

$scope.items = [{id:1, name:"abc"},{id:2, name:"def"},{id:3, name:"ghi"}];
$scope.pushArray = [];    
<table>
   <tr ng-repeat="e in items">
        <td class="text-right">
        {{e.id}}    
        <input type="checkbox" checklist-change="imChanged()" checklist-model="pushArray" checklist-value="e.id" >             
        </td>            
   </tr>
</table>

2 个答案:

答案 0 :(得分:1)

我认为你正在推送错误的完整对象列表。您只需映射列表并将id传递给$scope

编辑:当您使用$scope.pushArray作为对象而非数组时,可以正常工作。

Working Plnkr

<强> HTML

<body ng-controller="selection">
  <table>
    <tr ng-repeat="e in items">
      <td>
        <input type="checkbox" checklist-model="pushArray.ids" checklist-value="e.id"> {{e.name}}
      </td>
    </tr>
  </table>

  {{pushArray.ids | json}}

  <br />

  <button ng-click="select_all();">Select All</button>
  <button ng-click="unselect_all();">Unselect All</button>
</body>

<强> JS

var app = angular.module('app', ["checklist-model"]);

app.controller('selection', ['$scope', function($scope) {
  $scope.items = [{
    id: 1,
    name: "abc"
  }, {
    id: 2,
    name: "def"
  }, {
    id: 3,
    name: "ghi"
  }];
  $scope.pushArray = { ids: []}; // Works fine when using it as an object
  //$scope.pushArray = [];

  $scope.select_all = function() {
    $scope.pushArray.ids = $scope.items.map(function(item) { return item.id; });
  };

  $scope.unselect_all = function() {
    $scope.pushArray.ids = [];
  };
}]);

希望它适合你!

答案 1 :(得分:0)

我更新了checklist-model上的示例并修复了此问题。检查出http://vitalets.github.io/checklist-model/