我有一个AngularJS指令,允许用户从列表中选择一个值进行过滤。很简单的概念,它在这里表示:AngularJS复选框过滤器指令
问题是,当我点击他们都选择意外复选框之一。我的指令非常简单,所以我不确定为什么会发生这种情况。周围的选择和复选框的代码如下:
$scope.tempFilter = {
id: ObjectId(),
fieldId: $scope.available[0].id,
filterType: 'contains'
};
$scope.toggleCheck = function (id) {
var values = $scope.tempFilter.value;
if (!values || !values.length) {
values = $scope.tempFilter.value = [];
}
var idx = values.indexOf(id);
if (idx === -1) {
values.push(id);
} else {
values.splice(idx, 1);
}
};
$scope.valuesListValues = function (id) {
return $scope.available.find(function (f) {
return f.id === id;
}).values;
};
和数据类似于:
$scope.available = [{
id: 23,
name: 'Store'
values: [
{ id: 124, name: "Kansas" },
{ id: 122, name: "Florida" }, ... ]
}, ... ]
视图逻辑如下:
<ul class="list-box">
<li ng-repeat="val in valuesListValues(tempFilter.fieldId)">
<div class="checkbox">
<label ng-click="toggleCheck(val.id)">
<input ng-checked="tempFilter.value.indexOf(val.id) === -1"
type="checkbox"> {{val.name}}
</label>
</div>
</li>
</ul>
首先,它toggleCheck
火灾两次,但填充正确的数据(第二次给予我的代码,但它删除它)。
第二次火灾后,它检查所有的箱子...任何想法?
继承人一个很好的指令,内置支持复选框:http://vitalets.github.io/checklist-model/ – amcdnl