微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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' ]);

原文地址:https://www.jb51.cc/angularjs/142776.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐