Каждый раз, когда я нажимаю кнопку «Добавить элемент», он повторно добавляет item
в массив items
. Например, если я нажимаю «Добавить элемент» в пять раз массив:Добавить элемент в массив, если он не находится в массиве
items: [item, item, item, item, item]
Как я могу изменить мой код, чтобы добавить первый item
, но не добавлять дополнительные item
S в массив, например, так:
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
Вы пробовали, если $ scope.items.indexOf ($ scope.item)! = -1 чем push item в массиве? – immirza
Вы хотите только «нажимать» один раз (в первый раз)? – Amit
Каково ваше обоснование использования '$ scope.items [i]', когда 'i' равно -1? Что это должно достичь? – doldt