Я работаю с угловыми, и я пытаюсь создать кнопку «Выбрать все».indexof - проверить, есть ли значение в массиве с javascript)
У меня есть список элементов, каждый элемент имеет переключатель, а то, что я делаю, при изменении (каждый раз, когда переключатель изменяется от истинного (выбранного) до значения false (не выбрано), я запускаю функцию для создания массива со всеми идентификаторами выбранных элементов.
Это работает почти идеально, проблема в том, что я столкнулся некоторые проблемы с методом indexfOf, чтобы проверить, если ID уже в массиве.
var isInArray;
isInArray = function(arr, id) {
console.log("index of ", arr.indexOf(id));
return arr.indexOf(id);
};
scope.evtSelectAll = function() {
return angular.forEach(scope.listToDisplay, function(element) {
element.copyTo = true;
return scope.selectFromList(element.iID, element.copyTo);
});
};
scope.selectFromList = function(id, copy) {
if (copy === true && isInArray(scope.selected, id) === -1) {
scope.selected.push(id);
} else {
scope.selected.pop(id);
}
console.log("scope.selected - ", scope.selected);
if (scope.selected.length > 0) {
console.log("Emitted event: can proceed!");
scope.$emit('enough-elements');
} else {
console.log("Emitted event: can not proceed!");
scope.$emit('not-enough-elements');
}
return scope.result = scope.selected;
};
в проблема у меня есть, когда массив (scope.selected) имеет несколько идентификаторов.
Допустим, например, что мои scope.selected выглядит следующим образом:
scope.selected = [2,3,4,7]
, если я нажму на выбор все, ничего не добавляется (и это правильно)
Теперь, скажем, я снимите галочку 4 и 7, например, и мой scope.selected теперь выглядит следующим образом:
scope.selected = [2,3]
Если я теперь нажать на выбор, мой результат состоит в следующем: [2,4,7].
Я потерять
Я думаю, что это связано с тем, что мой массив не имеет один единственный пункт?
благодарит за любую помощь. Вот также быстрый codepen, чтобы объяснить проблему. Если вы проверите консоль и поиграете с помощью переключателей, вы сможете сразу увидеть, о чем я говорю.
Заранее спасибо
Будет ли проблема пустым значением $ scope.slected полностью и воссоздать его, переписав отмеченные элементы в списке, как только произойдет переключение? –
Нет, я не понимаю, почему это должно быть честью. Мне просто нужно быть осторожным, чтобы опорожнить его только при выборе всего, что я предполагаю, правильно? – Nick
, по крайней мере, в примере codepen, 'element.iID' следует изменить на' element.id' – Matthias