AngularJS:将过滤器应用于模板

时间:2016-10-16 09:25:20

标签: angularjs angularjs-filter

我创建了一个简单的过滤器,根据当前的区域设置格式化数字。

angular.module('myApp').filter('doubleFilter', DoubleFilter);

function DoubleFilter($translate) {
    return function(val, decimalPlaces) {
        if (val && (typeof val === 'number')) {
            val = val.toFixed(decimalPlaces);
            if ($translate.use() === 'de_DE') {
                val = val.replace('.', ',');
            }
        }
        return val;
    }

};

我在我的模板中调用此过滤器,它可以正常工作:

{{dog.weight | doubleFilter : 2}}

但是,当我使用$ translate.use('en_US')更改语言时,我的模板中的数字格式不会更新。显然我错过了这里的一些东西。

如何在语言发生变化时更新视图?

2 个答案:

答案 0 :(得分:1)

我认为您的指令需要倾听本地更改的通知',例如:

scope.$on('$localeChangeSuccess', function () {
            // code to execute the filter
              });

答案 1 :(得分:0)

让您的过滤器有状态可能会有所帮助(请参阅https://docs.angularjs.org/guide/filter