Очень простой вопрос о настраиваемом фильтре. Я не понимаю, как объекты продуктов передаются фильтру как items
или как фильтр имеет к ним доступ?Основы фильтра Angularjs
Я предполагаю, что это связано с <li ng-repeat="product in products | priceFilter:prices>
, но четкое объяснение поможет как Google, и чтение документов angularjs пока не помогло.
JS файл
var myAppModule = angular.module('myApp', []);
myAppModule.filter('priceFilter', function() {
return function(items, prices) {
console.log(items);
var filtered = []
// Are all the brands active?
var allInActive = true;
for(var price in prices){
if(prices[price].active){
allInActive = false;
break;
}
}
if(allInActive){
return items;
}
angular.forEach(items, function(item) {
if(item.price_desc != null){
if(prices[item.price_desc].active){
filtered.push(item);
}
}
});
return filtered;
};
});
function ProductsController($scope, $filter) {
$scope.products = productsData;
}
HTML
<li ng-repeat="product in products | priceFilter:prices" ></li>
так что источник массива '' продуктов остается неизменным и не зависит от вызова 'продукт' продуктов? – Robbo
Да, однако, вы можете добавить другую трубку и другой фильтр в правую сторону. Затем каждый фильтр будет применяться слева направо. –