У меня есть массив значений, который я показываю с помощью ng-repeat
. Когда я нажимаю на один из них, я добавляю это значение в другой массив. Если он уже существует, я удаляю его. Здесь хорошо работает. Но у меня есть кнопка, которая толкает весь массив во второй. Он работает, но я могу подтолкнуть весь массив бесконечно, даже если значение уже существует. Конечно, если я проверю одно или два значения, а затем нажимаю «Выбрать все», он должен выбрать все значения, которые уже выбирают с помощью одного выбора. По thge образом это код с jsfiddle:Удалить значение массива, если оно уже существует javascript
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.all_titles = [
"Title 1",
"Title 2",
"Title 3",
"Title 4"
];
$scope.selection=[];
$scope.getSelectedItem = function getSelectedItems(title) {
var idx = $scope.selection.indexOf(title);
// is currently selected
if (idx > -1) {
$scope.selection.splice(idx, 1);
}
// is newly selected
else {
if(Array.isArray(title)) {
for(var i=0;i<title.length;i++) {
$scope.selection.push(title[i]);
}
} else {
$scope.selection.push(title);
}
}
};
}
<div ng-controller="MyCtrl">
<div>
<button data-ng-click="getSelectedItem(all_titles)">
Select all
</button>
</div>
<div ng-repeat="title in all_titles">
<a ng-click="getSelectedItem(title)">{{title}}</a>
</div>
<hr>
<div>
{{selection}}
</div>
</div>
http://jsfiddle.net/HB7LU/20342/
это то, что вы хотите? https://jsfiddle.net/L1Lf8yau/ не совсем понятно, как должна работать кнопка select all. –
Совсем нет .. потому что таким образом, если вы нажмете один, а затем в «Выбрать все», он выбирает все, кроме выбранного вами ранее. –