我创建了一个简单的过滤器,根据当前的区域设置格式化数字。
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')更改语言时,我的模板中的数字格式不会更新。显然我错过了这里的一些东西。
如何在语言发生变化时更新视图?
答案 0 :(得分:1)
我认为您的指令需要倾听本地更改的通知',例如:
scope.$on('$localeChangeSuccess', function () {
// code to execute the filter
});
答案 1 :(得分:0)
让您的过滤器有状态可能会有所帮助(请参阅https://docs.angularjs.org/guide/filter)