gpt4 book ai didi

AngularJS : Extending built-in filters

转载 作者:行者123 更新时间:2023-12-03 23:14:30 24 4
gpt4 key购买 nike

我想修改currency过滤以处理输入值中的自定义货币格式。

(例如,AUD 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())?

  • 如果该功能没有公开,那么作者认为它不是他们想要提供的公共(public) api。作者可能有一个特定的实现特定功能,可能不会马上显而易见。

    PS :该模块是您需要过滤器的任何内容。我在不同的模块中分离了一些功能,并在构建我的主模块时需要它们
    var App = angular.module('App', [ 'ui' ]);

    关于AngularJS : Extending built-in filters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13301367/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com