我使用角度的货币过滤器。它似乎不会过滤从函数返回的数据。我想我错过了什么。可能是过滤器被消化后?
以下是我的代码片段:
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。 但不幸的是,我无法复制我的问题。
答案 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>