1
我想達到兩個目的:限制複選框的選擇並綁定到AngularJS數組
綁定數組複選框列表(只是一個字符串數組),並
限制用戶可以對一些 1之間選擇的數量和可用的項目數少1
我可以得到(2)工作,直到用戶點擊的最後項目,在這一點上它失去了軌道和物品保持選擇。
交互代碼是在這裏:http://codepen.io/adamcodegarden/pen/bdbQqe(從一個類似的例子分叉)
我的HTML /角碼:
<p ng-repeat="item in allOptions" class="item" id="{{item}}">
{{item}} <input type="checkbox" ng-change="sync(bool, item)" ng-model="bool" ng-checked="isChecked(item)"> Click this to sync this item with the target array. {{item}} Selected: {{bool}}
和JS:
var myApp = angular.module("myApp", []);
var maxItems = 1;
myApp.controller('myController', function($scope) {
$scope.isChecked = function(item){
var match = false;
for(var i=0 ; i < $scope.data.length; i++) {
if($scope.data[i] === item) {
match = true;
}
}
return match;
};
$scope.allOptions = [
'one', 'two', 'three', 'four'
];
$scope.data = [
];
$scope.sync = function(bool, item){
if (bool) {
// add item
$scope.data.push(item);
// if we have gone over maxItems:
if ($scope.data.length > maxItems) {
//remove oldest item
$scope.data.splice(0,1);
}
} else {
// remove item
for (var i=0 ; i < $scope.data.length; i++) {
if ($scope.data[i] === item){
$scope.data.splice(i,1);
}
}
}
};
});
我覺得codepen無法正常工作。我選擇了其中的4個,最終數據數組只顯示1個項目。 – ABOS
這是所需的行爲 - 它將選定的數組限制爲1個項目,如'var maxItems = 1''' – Adamski
所示。因此,您正在研究如何使用最終數據陣列同步選擇。 – ABOS