2016-04-01 12 views
2

Açısal filtresini kullanıyorum. Bir işlevden döndürülen bir veriyi filtrelemek gibi görünmüyor. Sanırım bir şey kaçırıyorum. Filtre sindirildiğinde olabilir mi? html şablonuna Yani bir şekilde html görüntülerFiltre işlevde çalışmayan değerler döndürülmüş değerler

var calculateTotalExGST = function() { return _.sum(vm.items, function(item) 
                { return item.cost; }); 
             }; 
vm.total = { exgst: calculateTotalExGST() }; 

toplam için

html şablon dosyası

<span>total: {{ vm.total.exgst | currency}}<span> 

controller.js:

İşte benim kod parçacıkları var : 5

Ancak, $ 5.00 olarak görüntülenmelidir. Değer döndürülür ancak işlev döndürülür ancak filtre çalışmaz. $ Digest gerçekleştiğinde yapılacak bir şey olabilir mi?

Herkes bana açıklamama yardım edebilir mi?

düzenleme: kodu hakkında Biraz daha bilgi, vm.items ui-yönlendirici $state gelen değerlerdir.

Bunların hepsini jsfiddler'e nasıl alacağımı bilmiyorum. Yani sadece eyalete alay ettim. Ancak maalesef sorunumu çoğaltamıyorum.

https://jsfiddle.net/ex5rj9u7/

+1

bir codepen/jsfiddle sorununuzu gösteren lütfen hazırlayın. –

cevap

1

Sana yanlış yöntemi kullanarak düşünüyorum. Lodash belgesinden, sum sadece diziler için kullanılır. sumBy yöntemini arıyorsunuz.

bu örneğe göz atın:

JS:

angular.module('app', []); 

angular.module('app') 
    .controller('MainController', mainController); 

mainController.$inject = ['$scope']; 

function mainController($scope){ 

    var vm = this; 

    vm.items = [ 
    { cost: 5}, 
    { cost: 5} 
    ]; 

    var calculateTotalExGST = function() { 
    return _.sumBy(vm.items, function(item){ 
     return item.cost; 
    }); 
    }; 

    console.log(calculateTotalExGST()) 

    vm.total = { exgst: calculateTotalExGST() }; 


} 

HTML:

<div data-ng-app="app"> 

    <section ng-controller="MainController as mainVm"> 
    <span>total: {{ mainVm.total.exgst | currency}}</span> 
    </section> 

</div> 
+0

sumBy kullanarak doğru olurdu, ancak çalıştığım sürüm 3.10'dur (toplamı sumBy'dir). Toplama çalışır, ancak filtrelemeyi değil. – Jon45678

+0

Tamam. ama ben bir çalışma örneği yayınladım. Kodunuzda neyin yanlış olduğunu görmek için bir göz atın. Konsolunuzda herhangi bir JS hatası bulunup bulunmadığına bakın. Kodunuzu kopyaladığımda, hesaplamadaTotalExGST işlevinde bir sözdizimi hatası oluştu. –