过滤器不处理函数返回值

时间:2016-04-01 12:17:37

标签: javascript angularjs angular-filters

我使用角度的货币过滤器。它似乎不会过滤从函数返回的数据。我想我错过了什么。可能是过滤器被消化后?

以下是我的代码片段:

html模板文件

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

html模板的controller.js

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

所以html会以某种方式显示

  

总计:5

但它应显示为5.00美元。返回值但功能但过滤器不起作用。当$ digest发生时,它可以做点什么吗?

任何人都可以帮我解释一下吗?

修改 有关代码的更多信息,vm.items是来自ui-router的$state的值。

我不知道如何把所有这些都融入jsfiddler。所以我只是嘲笑$ state。 但不幸的是,我无法复制我的问题。

https://jsfiddle.net/ex5rj9u7/

1 个答案:

答案 0 :(得分:1)

我认为你使用的是错误的方法。在Lodash文档中,sum仅用于数组。您正在寻找sumBy方法。

看一下这个例子:https://jsfiddle.net/relferreira/dng7s3qs/

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