我想让Angular的数字过滤器具有一个相同的格式,无论选择的本地化如何。
所以,从Angular source in GitHub我看到过滤器的实现如下所示:
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);
};
}
我希望我的数字看起来像这样:123 456.78。意思,
formats.GROUP_SEP = " "; // Always, disrespect locale
formats.DECIMAL_SEP = "."; // Always, disrespect locale
我看到this post有关覆盖现有过滤器的问题,但我无法弄清楚如何在我的案例中使用它来实现我想要的目标。
答案 0 :(得分:7)
您可以覆盖$ locale以使用您自己的值,如下所示:
var app = angular.module("test", []);
app.run(["$locale", function ($locale) {
$locale.NUMBER_FORMATS.GROUP_SEP = " ";
$locale.NUMBER_FORMATS.DECIMAL_SEP = ".";
}]);
Plnkr链接:https://plnkr.co/edit/DlacehjcZrFRmWNFs1qZ?p=preview
答案 1 :(得分:0)
您可以这样覆盖它:
myApp.config(['$provide', function($provide) {
$provide.decorator('numberFilter', ['$delegate', function($delegate) {
return function(number, fractionSize) {
// if null or undefined pass it through
return (number == null)
? number
: formatNumber(number, formats.PATTERNS[0], ' ', '.', fractionSize);
};
}
}])
}])
另一种方法是设置$ locale.NUMBER_FORMATS以始终拥有您想要的值。