使用自定义分隔符的AngularJS静态数字过滤器

9

如何将Angularjs数字过滤器中的分隔符从逗号更改为自定义字符?

现在{{ price | number }}返回1,000.00,而我需要它像1 000.00这样。

我需要如何重写内置的Angular过滤器?

1个回答

16

您不需要修改Angular源代码或更改语言环境。 您甚至不需要为此编写自定义过滤器。 只需更改$locale服务的NUMBER_FORMATS.GROUP_SEP即可:

$locale.NUMBER_FORMATS.GROUP_SEP = ' ';
$scope.price = 100000;

但最好在run块中执行,而不是在控制器中执行。

angular.module('demo', []).controller('MainCtrl', function($scope, $locale) {
    $locale.NUMBER_FORMATS.GROUP_SEP = ' ';
    $scope.price = 100000;
});
<script src="https://code.angularjs.org/1.4.3/angular.js"></script>

<div ng-app="demo" ng-controller="MainCtrl">
    {{ price | number }}    
</div>


你确定是在运行块中,而不是配置块中吗? - Alliswell
无论如何,它可以工作。我想这是最好的答案。谢谢老兄。 - Alliswell
2
因为$localeProvider不公开这些属性,所以在配置块中不能轻松地重置它。更好的说法是:因为ngLocale模块创建了$locale,它是一个值(而不是提供者或常量),因此在配置块中无法访问。 - dfsq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接