我有一系列金额和货币。后者不仅仅是'USD'或'EUR',而是包含该货币格式规则的对象。我已经编写了一个用于格式化数量的过滤器,但只有在我对格式化参数进行硬编码时它才有效:
// arguments: currency symbol, is symbol prefix, decimal symbol, digit group symbol
{{ entry.amount | currency24: '$',true,'.',',' } //USD example
{{ entry.amount | currency24: '€',false,'.',',' } //EUR example
我希望能够将整个对象放在那里:
{{entry.amount | currency24: entry.currency }} // currency object holds all the formatting parameters, but I could just as well pass them one by one
我怎样才能做到这一点?
编辑:entry
不是$ scope的一部分。它来自ng-repeat:
ng-repeat="entry in entries"
这就是为什么我在将它传递给过滤器时遇到问题。
答案 0 :(得分:1)
您可以像上面提到的那样将任何对象传递给过滤器。
HTML标记保持不变:
<p ng-repeat="entry in entries">
{{entry.amount | currency24: entry.currency }}
</p>
以下代码执行您的要求:
.controller('DemoController', function($scope) {
$scope.entries = [{
amount: 35,
currency: {
symbol: '$'
}
}, {
amount: 40,
currency: {
symbol: '€'
}
}];
})
.filter('currency24', function() {
return function(amount, currencyObject) {
return amount + currencyObject.symbol;
};
});
并查看此plunker。