gpt4 book ai didi

javascript - 限制复选框选择并绑定(bind)到 AngularJS 中的数组

转载 作者:行者123 更新时间:2023-11-30 16:55:45 25 4
gpt4 key购买 nike

我正在努力实现两件事:

  1. 将数组绑定(bind)到复选框列表(只是一个字符串数组),以及

  2. 将用户可以进行的选择数量限制在介于1 和可用项目数减 1。

我可以让 (2) 工作,直到用户单击最后一个项目,此时它失去跟踪并且项目保持选中状态。

交互代码在这里:http://codepen.io/adamcodegarden/pen/bdbQqe (从类似的例子中 fork )

我的 HTML/Angular 代码:

<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,我更喜欢 plunker。所以我创建了这个 plunker

http://plnkr.co/edit/l8gxQHXBQdFeKIuwf3f0?p=preview

主要思想是我将原始数组格式化为:

$scope.allOptions = [
{key: 'one'}, {key: 'two'}, {key: 'three'}, {key:'four'}
];

同步逻辑也有细微的变化:

$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 first item
$scope.data[0].checked = false;
$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);
}
}
}

};

同时更改 html 部分:

<p ng-repeat="item in allOptions" class="item" id="{{item.key}}">
{{item.key}} <input type="checkbox" ng-change="sync(item.checked, item)" ng-model="item.checked"> Click this to sync this item with the target array. {{item.key}} Selected: {{bool}}

关于javascript - 限制复选框选择并绑定(bind)到 AngularJS 中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29751887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com