может кто-нибудь помочь мне с проблемой? Nf n У меня есть массив объектов, который отображается в таблице, и у меня есть поиск. Каждый объект представляет собой одну строку в таблице. Основная проблема заключается в массиве. Мы можем изменить его в любое время (можете добавлять новые строки, удалять существующие строки и изменять значение в таблице), даже если мы что-то ищем.Угловой. Как фильтровать динамический массив в контроллере?
Теперь у меня есть что-то вроде этого:
$scope.$watch('search', function() {
if($scope.search!== "") {
if(! $scope.initArray.length) {
$scope.initArray= $scope.array;
}
$scope.array= $filter('filter')($scope.initArray, function(item) {
return item.name1.indexOf($scope.search) > -1 ||
item.name2.indexOf($scope.search) > -1 ||
item.name3.toLowerCase().indexOf($scope.search) > -1;
});
} else {
$scope.array= $scope.initArray;
}
});
Как вы можете видеть, я использую два массива. Все хорошо, но когда я хочу изменить $ scope.array, мне нужно изменить $ scope.initArray. И это вызывает много проблем.
Например, таблица имеет 3 строки. Каждая строка состоит из 3 коломнов. Я что-то ищу, и он находит только одну строку (поиск должен найти значение хотя бы в одном из colomn). После этого я добавляю новую строку. Он отображается в таблице, если он содержит значение, которое я ищу. Если мы очистим поле поиска, все данные будут отображены обратно. Для этого правильного поведения я должен делать много равных манипуляций с $ scope.initArray и $ scope.array. Если я использую только один массив, после того, как таблица поиска содержит неправильные данные.
Есть ли способ, которым я могу использовать только один массив?
$ scope.array Передаю его пользовательскому интерфейсу.
$ scope.initArray это исходные данные (до поиска)