ng-repeat и фильтрация
Добрый вечер. Проблема такая: есть такой "ng-repeat" - ng-repeat="item in getRecentContacts()" который рисует массив(результат функции getRecentContacts)
$scope.getRecentContacts = function() {
return allContacts.filter(function(contact){
if(!$scope.search){
return allContacts;
} else {
var filtered = [];
var letterMatch = new RegExp($scope.search, 'i');
for (var i = 0; i < allContacts.length; i++) {
var item = allContacts[i];
if (letterMatch.test(item.isDateRecent ? item.isDateRecent.dateRecentName : '' ||
(item.data.lastName) ? item.data.lastName.substring(0, item.data.lastName.length) :
item.data.name.substring(0, item.data.name.length))) {
filtered.push(item);
}
}
return filtered;
}
});
};
При вводе в поисковое поле ($scope.search) критерия поиска фильтрация отрабатывает, возвращает отфильтрованный массив, но отфильтрованный массив не рендерится. В чем может быть проблема? |
Разобрался. Теперь рендерит:)
$scope.getRecentContacts = function() {
return allContacts.filter(function(contact){
if(!$scope.search){
return allContacts;
} else {
var letterMatch = new RegExp($scope.search, 'i');
if (letterMatch.test(contact.isDateRecent ? contact.isDateRecent.dateRecentName : '' ||
(contact.data.lastName) ? contact.data.lastName.substring(0, contact.data.lastName.length) :
contact.data.name.substring(0, contact.data.name.length))) {
return contact;
}
}
});
};
|
хм интересно, не понятно зачем фильтр обёрнут в функцию, если всё в одном контроллере, смысла передавать 'i' нет. Сам не люблю инъекции в HTML, но ng-repeat гибок,
ng-repeat='data in data_list_filter = (data_list | filter:content_filter) | orderBy:sort_field:sort_reverse | Pagination:pageNo:itemsPage' |
| Часовой пояс GMT +3, время: 06:08. |