Я пытаюсь фильтровать через несколько свойств в Угловом. Я могу фильтровать через одно свойство легко с помощью углового filter:{ title: searchString }
, но для фильтрации через несколько свойств ... Я создал свой собственный настраиваемый фильтр, который пытается сопоставить строку поиска с любым из свойств в массиве.прохождение через 2 свойства с использованием пользовательского фильтра angularjs
Что мне нужно сделать, это:
Если John Wayne
проходит через .. это показывает John Wayne
но если передается только John
или только Wayne
через ... Он по-прежнему показывает, Джон Уэйн. Аналогично для n w
после John
заканчивается n
и subTitle
начинается с w
PS: Я могу только иметь один нг-модели
HTML:
<input type="text" ng-model="searchString">
<div ng-repeat="tel in arr1 | customFilter: searchString:['title','subTitle']"></div>
JS:
$scope.arr1 = [
{title: 'John', subTitle:'Wayne'}
{title: 'Barry'}
];
.filter('customFilter',[ function() {
return function(items, searchText, attrs) {
var filtered = [];
var filteredItems = items.map(function(item) {
angular.forEach(attrs, function(attr) {
if (item.hasOwnProperty(attr)) {
filtered.push(item);
}
});
});
return filtered;
};
}])
Моя проблема в том, что я получаю ошибку или:
Дубликаты в ретрансляторе не допускаются. Используйте выражение 'track by' для , чтобы указать уникальные ключи. Повторитель: tel in arr1
У вас ошибка в имени вашего фильтра: customFilter на ваше имя фильтра и custommFilter в вашем HTML –
@ManuelObregozo возгласы .. это была опечатка. Случайно вставил, что в сообщении, но это не проблема – user4756836
Я до сих пор понимаю, что это за идея фильтра, какой результат, вашего массива? –