如何覆盖Angular的数字过滤器?

Yul*_*ian 2 javascript angularjs angular-filters

我想让Angular的数字过滤器具有一个相同的格式,无论选择的本地化.

所以,从GitHub中Angular源代码我看到过滤器的实现如下所示:

function numberFilter($locale) {
   var formats = $locale.NUMBER_FORMATS;
   return function(number, fractionSize) {

       // if null or undefined pass it through
       return (number == null)
           ? number
           : formatNumber(number, formats.PATTERNS[0], formats.GROUP_SEP, formats.DECIMAL_SEP,
                   fractionSize);
    };
}
Run Code Online (Sandbox Code Playgroud)

我希望我的数字看起来像这样:123 456.78.含义,

formats.GROUP_SEP = " "; // Always, disrespect locale
formats.DECIMAL_SEP = "."; // Always, disrespect locale
Run Code Online (Sandbox Code Playgroud)

我看到这篇关于覆盖现有过滤器的文章,但我无法弄清楚如何在我的案例中使用它来实现我想要的.

hen*_*der 7

您可以覆盖$ locale以使用您自己的值,如下所示:

var app = angular.module("test", []);

app.run(["$locale", function ($locale) {
    $locale.NUMBER_FORMATS.GROUP_SEP = " ";
    $locale.NUMBER_FORMATS.DECIMAL_SEP = ".";
}]);
Run Code Online (Sandbox Code Playgroud)

Plnkr链接:https://plnkr.co/edit/DlacehjcZrFRmWNFs1qZ p = preview

  • 侦听语言环境发生变化时发出的事件?因此,每次语言环境更改时都可以强制执行这些值. (2认同)