我有一個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