我遇到了AngularJS过滤器问题,请多多指教。在几种不同的视图中,我有难以理解的数字,例如1000000000。任务是用逗号分隔每三个数字的块。为此,我编写了一个过滤器:
angular.module('AppCore')
.filter('numberCommaSeparator', function () {
return function (x) {
x = x.toString();
var pattern = /(-?\d+)(\d{3})/;
while (pattern.test(x))
x = x.replace(pattern, "$1,$2");
return x;
}
});
在视图中添加了过滤器:
<span ng-if="project.value != 0">{{project.currency.name}} {{project.value|numberCommaSeparator}}</span>
<span ng-if="project.value == 0">N/A</span>
在三个位置中的两个位置它都可以正常工作,但是,在第三种情况下,我确实不断收到一个错误:
Error: [$interpolate:interr] Can't interpolate: {{project.currency.name}} {{project.value|numberCommaSeparator}}
TypeError: Cannot read property 'toString' of undefined
我想念什么?
答案 0 :(得分:1)
该错误表明,在某些情况下,您的project.value
是未定义
如果该值为 undefined ,则满足第一个ng-if条件project.value != 0
,而不是第二个,您还应该检查undefined以避免该错误。