2016-03-07 157 views
0

我有我的角码有问题。角度过滤器复制阵列

我想过滤和使用角度过滤服务的数组,但是当我得到过滤数组过滤它重复,而不是采取数组中的每个元素,我已经尝试跟踪,但它似乎不是加工。

这是我的角的代码:

.filter('priceRange', function() { 
     return function(arr, range) { 
      if (!range) {return arr; } 
      var priceResult = []; 
      var pRange = range.split('-'); 
      angular.forEach(arr, function(key, index) { 
       if (key.pPice >= pRange[0] && key.Price <= pRange[1]) { 
        priceResult.push(key); 
       } 
      }) 
      console.log(arr); 
      return priceResult; 
     } 
    }) 

下面是我的HTML SEP起来:

<div class="col s12 m3" ng-repeat="car in [1,2,3,4,5] | priceRange" > 
</div> 

当我在过滤器部CONSOLE.LOG阵列我得到:

[1, 2, 3, 4, 5] rentTatu.js (line 66) 
[1, 2, 3, 4, 5] rentTatu.js (line 66) 
[1, 2, 3, 4, 5] rentTatu.js (line 66) 
[1, 2, 3, 4, 5] rentTatu.js (line 66) 
[1, 2, 3, 4, 5] rentTatu.js (line 66) 

当我尝试用不同的数组我仍然得到数组的重复五tims

+0

请检查此line-key.pPice> = pRange [0] && key.Price <= pRange [1],它有错误的变量名key.Price,它应该是key.pPrice。 –

+0

@ Shailendra Singh Deol谢谢你的回答只是一个愚蠢的拼写错误... –

回答

1

过滤器获取参数范围,该参数范围在调用过滤器时未设置。的HTML应该是这样,

<div class="col s12 m3" ng-repeat="car in [1,2,3,4,5] | priceRange: range" > 

其中范围是输入到过滤器中的参数。除非您传递参数,否则if循环后面的行将不会被执行。

1

你好,在我看来,range值为空或空值,所以整个数组返回,每次执行过滤器,这就是为什么你得到数组五次。

'range'变量的值是多少?

+0

嗨,感谢您的回复,范围值是一个选择标记,在每个选项中有一个价格范围。但我不认为这是问题,因为我console.loged阵列和过滤器重复数组五次而不是过滤它 –

+0

您是否尝试过console.log('range');进入你的过滤器?在那之后:if(!range){return arr; } –

+0

是的,它返回所选的选项值,如0-4000 –