角度滤波器复制数组

时间:2016-03-07 10:03:15

标签: angularjs ng-repeat

我的角度码有问题。

我正在尝试使用角度过滤器服务过滤和数组,但是当我过滤过滤器中的数组时,它会复制而不是采用数组中的每个元素,我已经尝试过跟踪,但它似乎没有工作。

这是我的角度代码:

.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 up:

<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)

当我尝试使用不同的数组时,我仍然会得到数组的五个重复

2 个答案:

答案 0 :(得分:1)

您好,我认为 val path = arrayOf(doubleArrayOf(1.0, 2.0), doubleArrayOf(1.0, 2.0), doubleArrayOf(1.0,3.0), doubleArrayOf(8.0,9.0)) 值为空或null,因此每次执行过滤器时都返回整个数组,这就是为什么您获得数组的原因次。

range”变量的价值是多少?

答案 1 :(得分:1)

过滤器采用的参数范围在调用过滤器时未设置。 html应该是,

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

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