每次单击“添加项目”按钮时,它会重复将item
添加到items
数组。例如,如果我单击“添加项目”五次,则数组为:
items: [item, item, item, item, item]
如何修改我的代码以添加第一个item
但不向数组添加额外的item
,如下所示:
items: [item]
我尝试将var i = -1
替换为var i = 0
,但绝不会将item
添加到items
数组。
以下是我的观点:
<body ng-controller="MainCtrl">
<button ng-click="addItem()">Add {{item}}</button>
<p>items: {{items | json}}</p>
</body>
...和控制器:
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.item = 'item';
$scope.items = [];
$scope.addItem = function () {
for (var i = -1; i < $scope.items.length; i++) {
if ($scope.items[i] != $scope.item) {
$scope.items.push($scope.item);
}
}
};
});
这是我的Plunker: http://plnkr.co/edit/OT900pXEcxGgkpJZna2x?p=preview
答案 0 :(得分:3)
在addItem()
中,使用indexOf
添加简单验证,以检查项目是否在数组中:
$scope.addItem = function () {
if ($scope.items.indexOf($scope.item) != -1){
// The item is already in the array, abort!
return;
}
$scope.items.push($scope.item);
}
答案 1 :(得分:3)
Here's a forked version of your plunkr.
它使用indexOf,这是一个内置函数来判断数组是否包含元素(当找不到项时它返回-1):
$scope.addItem = function () {
if($scope.items.indexOf($scope.item) === -1){
$scope.items.push($scope.item);
}
};
我不确定你想通过引用$scope.items[-1]
来实现什么,需要精心制作?