这是我的小提琴: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
};
}]);
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>
答案 0 :(得分:6)
您永远不会向color_id
数组添加任何内容,因此foreach
不会迭代任何内容。
我更新了您的代码,只使用主色数组并在其上添加selected
属性:
http://jsfiddle.net/VSph2/283/
HTML:
{{ color.name }} <input type="checkbox" ng-model="color.selected">
的javascript:
angular.forEach($scope.colors, function(color_id) {
color_id.selected = false;
});
答案 1 :(得分:5)
我在寻找类似的东西时遇到过这种情况,我的解决方案是重置color_ids对象
$scope.clearAll = function() {
$scope.color_ids = [];
};
您还需要对输入进行以下更改
<input type="checkbox" ng-model="color_ids[color.id]" ng-checked="color_ids[color.id]">
jsfiddle at https://jsfiddle.net/novelnova/VSph2/756/
答案 2 :(得分:3)
您误解了ng-model
上checkbox
的内容。它只会切换特定的值集。因此,在您的示例中,您可能希望将其更改为:
{{ color.name }} <input type="checkbox" ng-model="color.selected">
然后你的颜色会有一个名为selected
的额外属性,无论是真还是假,取决于是否选中该框。
要清除,您将遍历所有颜色并将其选定状态设置为false。
$scope.clearAll = function() {
angular.forEach($scope.colors, function(color) {
color.selected = false;
});