Javascript Angularjs过滤器基础
关于自定义过滤器的非常简单的问题。我不知道products对象是如何作为项目传递给过滤器的,或者过滤器是如何访问它们的 我想这和有关,您可以用类似于bash命令的方式在Angular中考虑|操作符。|将案例产品中左侧表达式的结果输送到右侧。在下面,这只是一种从视图模板调用过滤器的好方法 使用|时,左侧的收集将在a过滤器功能中发送,以完成过滤器。筛选器始终要求至少在要筛选的数组上使用参数。因此,我们可以安全地假设,在左手边总会有一些东西需要过滤 使用$filtername语法更容易查看底层函数调用: 上面的“filter”是过滤器的名称,然后,第一个参数数组是应用表达式的源数组 因此,|只是使用$filter的一种方便方法,无需显式传递数组参数Javascript Angularjs过滤器基础,javascript,angularjs,Javascript,Angularjs,关于自定义过滤器的非常简单的问题。我不知道products对象是如何作为项目传递给过滤器的,或者过滤器是如何访问它们的 我想这和有关,您可以用类似于bash命令的方式在Angular中考虑|操作符。|将案例产品中左侧表达式的结果输送到右侧。在下面,这只是一种从视图模板调用过滤器的好方法 使用|时,左侧的收集将在a过滤器功能中发送,以完成过滤器。筛选器始终要求至少在要筛选的数组上使用参数。因此,我们可以安全地假设,在左手边总会有一些东西需要过滤 使用$filtername语法更容易查看底层函数调用
因此,源阵列产品保持不变,并且不受在产品中调用产品的影响?是的,但是,您可以在右侧添加另一个管道和另一个过滤器。然后将从左到右应用每个过滤器。
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;
}
<li ng-repeat="product in products | priceFilter:prices" ></li>
$filter('filter')(array, expression, comparator)