过滤器插值问题

时间:2018-06-19 14:01:24

标签: angularjs

我遇到了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

我想念什么?

1 个答案:

答案 0 :(得分:1)

该错误表明,在某些情况下,您的project.value未定义

如果该值为 undefined ,则满足第一个ng-if条件project.value != 0,而不是第二个,您还应该检查undefined以避免该错误。