#javascript #angularjs
#javascript #angularjs
Вопрос:
У меня есть некоторая коллекция данных, которые я показываю с помощью ng-repeat
директивы:
myApp.controller("MyCtrl", function ($scope) {
$scope.products = [...]; // data from server
});
<tr ng-repeat="product in products">
<td>{{product.name}}</td>
<td>{{product.price}}</td>
</tr>
Также у меня есть несколько кнопок фильтрации: "Newest"
, "Popular"
и т.д.
И я хочу фильтровать свои данные при нажатии на эти кнопки.
В настоящее время я думаю, что могу просто определить отдельный обработчик событий для каждой этой кнопки в контроллере и программно отфильтровать products
переменную:
myApp.controller("MyCtrl", function ($scope) {
$scope.products = [...]; // data from server
$scope.showNewest = function() {
// here modify the $scope.products varialbe so changes will be reflected in UI
}
});
Но я думаю, что это уродливое решение. И я чувствую, что лучший способ — определить пользовательский фильтр, но сейчас у меня нет никаких идей, как должен выглядеть новый фильтр. Итак, какой идиоматический / лучший способ выполнить мою задачу?
Комментарии:
1. Фильтр не делает этого за вас?
2. Как вы сами упомянули, создайте пользовательский фильтр. docs.angularjs.org/api/ng/filter/filter
3. @RobertHarvey @Patrick Reck да, но проблема в том, что я не знаю, как уведомить filter внутри,
ng-repeat="product in products | myFilter"
какая кнопка была нажата.4. @IlyaIvanov откуда
filterCriteria
возьмется?5. @WelcomeTo из области