如何使用角度js过滤器格式化数组中的值

时间:2015-02-18 22:23:33

标签: javascript angularjs filter angular-filters selectize.js

我使用了角度过滤器来进行各种有趣的格式化,但始终使用原始值。例如,将数字过滤为货币格式。

我如何对一组值进行相同类型的过滤?例如

price = 1
prices = [1,2,3]

假设货币是https://docs.angularjs.org/api/ng/filter/currency

中提到的货币过滤器
{{price | currency}} 

将返回$ 1.00

我想

{{prices | currency}} 

返回[$ 1.00,$ 2.00,$ 3.00]

我怎么能写一个过滤器呢?或者我应该使用不同的工具吗?

更多背景信息......我在angular-selectize plugin内使用此数组。我没有选择在我的价值观上使用ng-repeat。

1 个答案:

答案 0 :(得分:1)

currency过滤器适用于单个值。如果需要适用于数组的过滤器,则需要添加自己的过滤器,例如:

angular.module('yourModule')
.filter('currenyArray', function($filter) {
  return function(input, uppercase) {
    input = input || [];
    var out = [];
    for (var i = 0; i < input.length; i++) {
      out.push($filter('currency')(input[i]))
    }
    return out;
  };
})

然而,这将返回一个数组。如果您确实想编写数组,则需要调整函数以计算字符串而不是数组。