2015-03-05 2 views
1

Я хочу, чтобы иметь возможность передавать другую ценовую точку на фильтр, но так, как он определен прямо сейчас, он не работает, если я не жестко его кодирую, например, priceArray.push (value.price)как передать аргумент пользовательскому фильтру angularjs

var priceSumUp = function ($log){ 
 

 
    return function(arrayObj, nameValue){ 
 
     
 
     var priceArray = [], 
 
      totalPrice = 0; 
 
     function sumUp(first, second){return first + second} 
 

 
     ng.forEach(arrayObj, function(value, key, obj){  
 
      priceArray.push(value.price); 
 
     }); 
 

 
     totalPrice = priceArray.reduce(sumUp, 0); 
 
     //console.log(priceArray); 
 
     return totalPrice; 
 
    }; 
 
}
<div class="" ng-bind-html="vm.getisSelected | priceSumUp:price"></div>

+1

Непонятно, что вы на самом деле хотите сделать. Включите образец значения 'vm.getisSelected' и то, что вы хотите получить от своего фильтра. – m59

+0

Кроме того, вопрос не имеет смысла. У вас есть массив, который передается в: 'arrayObj' и дополнительный аргумент' nameValue' в качестве параметров, но вы их не используете. Вы четко знаете, как их пройти, вы это делаете! – m59

+0

m59 моя кровать предполагалось быть priceArray.push (value.nameValue), но ответ дал мне работу, спасибо –

ответ

0

Я думаю, что вы ищете это ...

Сначала убедитесь, что вы передаете правильный аргумент. Либо измените его

$scope.price = 'price' 
// or 
<div ng-bind="items | priceSumUp:'price'"></div> 

Далее вы можете использовать массив типа свойств объекта ECMA для доступа к элементу ...

return function(arrayObj, v){ 
    var priceArray = arrayObj.map(function(obj){ 
    return obj[v] 
    }) 
    ... 
} 

Смотрите мой plunker here это также позволит сказать ...

<div ng-bind="items | priceSumUp:'tax'"></div> 
Смежные вопросы