Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angularjs过滤器基础_Javascript_Angularjs - Fatal编程技术网

Javascript Angularjs过滤器基础

Javascript Angularjs过滤器基础,javascript,angularjs,Javascript,Angularjs,关于自定义过滤器的非常简单的问题。我不知道products对象是如何作为项目传递给过滤器的,或者过滤器是如何访问它们的 我想这和有关,您可以用类似于bash命令的方式在Angular中考虑|操作符。|将案例产品中左侧表达式的结果输送到右侧。在下面,这只是一种从视图模板调用过滤器的好方法 使用|时,左侧的收集将在a过滤器功能中发送,以完成过滤器。筛选器始终要求至少在要筛选的数组上使用参数。因此,我们可以安全地假设,在左手边总会有一些东西需要过滤 使用$filtername语法更容易查看底层函数调用

关于自定义过滤器的非常简单的问题。我不知道products对象是如何作为项目传递给过滤器的,或者过滤器是如何访问它们的

我想这和有关,您可以用类似于bash命令的方式在Angular中考虑|操作符。|将案例产品中左侧表达式的结果输送到右侧。在下面,这只是一种从视图模板调用过滤器的好方法

使用|时,左侧的收集将在a过滤器功能中发送,以完成过滤器。筛选器始终要求至少在要筛选的数组上使用参数。因此,我们可以安全地假设,在左手边总会有一些东西需要过滤

使用$filtername语法更容易查看底层函数调用:

上面的“filter”是过滤器的名称,然后,第一个参数数组是应用表达式的源数组

因此,|只是使用$filter的一种方便方法,无需显式传递数组参数


因此,源阵列产品保持不变,并且不受在产品中调用产品的影响?是的,但是,您可以在右侧添加另一个管道和另一个过滤器。然后将从左到右应用每个过滤器。
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)