AngularJS:扩展内置过滤器

前端之家收集整理的这篇文章主要介绍了AngularJS:扩展内置过滤器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想修改货币过滤器来处理输入值中的自定义货币格式.

(例如,澳元3.00 – > $3.00).

一个选择是从头开始编写自己的过滤器.然而,这似乎是很多的重复,鉴于现有的过滤器是伟大的,我只需要先修剪一些字符从前面.

理想情况下,我会有这样的事情:

.filter('money',function($filters) {
    return function(text){
        var currency = text.substring(4)
        return $filters('currency')(currency)
    };
});

有可能:

>从另一个调用一个过滤器?
>访问内部方法(例如,formatNumber()显示here

还有什么其他选择对我开放吗?

>从另一个调用一个过滤器?

是的,我发现最好的解决方案是创建一个新的过滤器:

angular.module('ui.filters').filter('customCurrency',[ '$filter',function(filter) {
      var currencyFilter = filter('currency');
      return function(amount,currencySymbol) {
        return currencyFilter(amount.substr(4),currencySymbol);
      }
    } ]);

这样将“AUD 30.00”的值转换为“$30.00”

你不能,从我试过,从版本1.0.1覆盖一个过滤器.我尝试使用相同的名称创建一个过滤器,并尝试引用原始过滤器导致无限循环.

Here是一个很好的考虑点:

However,I would suggest not doing so – even if that is allowed.
Predefined filters are the public API of AngularJS. What if some parts
of AngularJS use some of them internally or one day you install some
add-on which depends on that filter?

参见also,基本相同的结论即使我相信op不需要一个自定义过滤器.

>访问内部方法(例如,formatNumber())?

如果功能没有暴露出来,那么作者认为这不是一个公开的api,他们想提供.作者可能有一个特定的实现特定功能,可能不是很明显.

PS:该模块是您需要的过滤器.我分离了不同模块中的一些功能,并在构建主模块时要求它们

var App = angular.module('App',[ 'ui' ]);

猜你在找的Angularjs相关文章