我有一个使用angular filter
构建的单页应用程序,负责将本地化字符串替换为引用键。
示例:
{{'example.context.section.id' | translate}}
我希望能够以编程方式禁用过滤器或覆盖它,以便它只输出密钥。关键是在模型上创建一个按钮,允许编写者查看翻译键的实际上下文。
angular.module('***').filter('translate', function() {
return function(input){ return input; }
});
我尝试在控制台中执行上面的过滤器替换,但翻译仍然使用实际的翻译过滤器。
我也尝试在事后配置块中使用$filterProvider
,但这也没有效果。为此,我按照(docs)[http://docs.angularjs.org/api/ng。$ filterProvider]上的指南进行了操作。
angular.module('ltAccountApp').config(['$filterProvider', function($filterProvider){
$filterProvider.register('translate', function(translate) {
return function(input) { return input; }
});
}]);
此变化也基于文档:
angular.module('ltAccountApp').run(['$provide', '$filterProvider', function($provide, $filterProvider){
$provide.value('translate', function(input){ return input; });
$filterProvider.register('translate', function(translate) {
return translate(input) || input;
});
}]);
也许我可以将过滤器提供程序添加到代码中,并根据rootscope变量在两个选项之间切换?
感谢您的帮助和建议!
使用AngularJS 1.08
答案 0 :(得分:1)
您可以在$rootScope
上定义一个标记来控制过滤器行为。
angular.module('***')
.filter('translate', function($rootScope) {
return function(input) {
// define a `enableFilter` property in $rootScope to control filter behavior
if ($rootScope.enableFilter) {
// transform input here
return transformedInput;
} else {
return input;
}
};
});