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

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...