У меня есть одностраничное приложение, построенное с угловым с filter
, которое отвечает за замену локализованных строк для справочных ключей.AngularJS отключить фильтр dyamically
Пример:
{{'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;
});
}]);
Может быть, я мог бы добавить поставщика фильтра к коду и его переключают между 2 вариантами на основе переменной rootscope?
Спасибо за помощь и предложения!
Использование AngularJS 1,08
Спасибо. Тогда как бы я переключил переменную $ rootScope с консоли? –
@ ogc-nick Ну, это нужно немного взломать. Вы можете назначить '$ rootScope'' window' и переключить 'enableFilter' с помощью:' $ rootScope. $ Apply (function() {$ rootScope.enableFilter =! $ RootScope.enableFilter;}); ' – Daiwei
Двойной глобальный взлом , мы лучше держим это на dl. Спасибо, хотя я сделаю это. Это только для прототипа в любом случае, а не для производства. –