2016-04-01 21 views
2

私はangleの通貨フィルターを使用しています。関数から返されたデータをフィルタリングしていないようです。私は何かが足りないと思う。フィルターが消化されたときでしょうか?関数の戻り値でフィルターが機能しません

ここに私のコードの抜粋です:だから何とかHTMLは

合計を表示し

HTMLテンプレートファイル、HTMLテンプレートの

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

controller.js

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

:5

ただし、$ 5.00と表示されます。値は返されますが、関数がフィルタは機能しません。 $ digestが起きたときに何かすることができますか?

誰でも私の説明を助けることができますか?

編集:コードに関する ビットより多くの情報、vm.itemsはUI-ルータの$stateからの値です。

私はどのようにjsfiddlerにそのすべてを取得するか分からない。だから私はちょうど$州を嘲笑した。 しかし、私は残念ながら私の問題を再現することはできません。

https://jsfiddle.net/ex5rj9u7/

+1

は、あなたの問題を示してcodepen/jsfiddleをしてください準備

は、この例を見てみましょう。 –

答えて

1

私は間違った方法を使用していると思います。 Lodashの文書から、sumは配列のためだけに使用されています。 sumByメソッドを探しています。

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を使うと正しいでしょうが、私が使っているバージョンは3.10です(sumByです)。 合計は機能しますが、フィルタリングは機能しません。 – Jon45678

+0

私は実際の例を掲載しました。あなたのコードに何が間違っているかを見てみましょう。あなたのコンソールにJSエラーがないかどうか調べてください。コードをコピーしたとき、calculateTotalExGST関数に構文エラーがありました。 –

関連する問題