Angular:如何通过链接取消选中所有复选框?

big*_*ato 3 html select angularjs

这是我的小提琴:http://jsfiddle.net/VSph2/280/

我正在尝试取消选中checkbox并使用链接重置范围变量的值,但是,它似乎不起作用.有人可以帮忙吗?

使用Javascript:

var app = angular.module('myApp', []);

app.controller('IndexCtrl', ['$scope', function($scope) {

  $scope.colors = [
    {id: 1, name: "Blue"},
    {id: 2, name: "Green"},
    {id: 3, name: "Red"}
  ];
  $scope.color_ids = [];

  $scope.clearAll = function() {
    angular.forEach($scope.color_ids, function(color_id) {
      color_id.checked = false; //nothing works!!
      color_id.selected = false; //
    });
    $scope.color_ids = [];
    $scope.color_ids.selected = false; //doesn't work either
  };

}]);
Run Code Online (Sandbox Code Playgroud)

HTML:

<div ng-controller="IndexCtrl">{{1+1}}
<h2>Products</h2>
  <div class="filters col-two">
    <a ng-click="clearAll()">Clear all filters</a>
    <h3>Color</h3>
    <div ng-repeat="color in colors">
      {{ color.name }} <input type="checkbox" ng-model="color_ids">
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

Phi*_*ler 6

你永远不会向color_id数组添加任何东西,所以foreach不会迭代任何东西.

我更新了你的代码,只使用主颜色数组并在其selected上添加一个属性:

http://jsfiddle.net/VSph2/283/

HTML:

{{ color.name }} <input type="checkbox" ng-model="color.selected">
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

angular.forEach($scope.colors, function(color_id) {        
    color_id.selected = false;
});
Run Code Online (Sandbox Code Playgroud)


Bar*_*say 5

我在寻找类似的东西时遇到了这个,我的解决方案是重置color_ids对象

$scope.clearAll = function() {    
    $scope.color_ids = [];
};
Run Code Online (Sandbox Code Playgroud)

您还需要对输入进行以下更改

<input type="checkbox" ng-model="color_ids[color.id]" ng-checked="color_ids[color.id]">
Run Code Online (Sandbox Code Playgroud)

jsfiddle在 https://jsfiddle.net/novelnova/VSph2/756/