Javascript 如何在某些事件后加载角度平移
我有一个在登录事件后调用的TranslationService,在这个服务中,我想对$translateProvider.translation进行序列化,但这个对象在app.config(…)之外似乎不可访问。在服务中,我想替换以前的翻译。 下面是一些代码:Javascript 如何在某些事件后加载角度平移,javascript,angularjs,angular-translate,Javascript,Angularjs,Angular Translate,我有一个在登录事件后调用的TranslationService,在这个服务中,我想对$translateProvider.translation进行序列化,但这个对象在app.config(…)之外似乎不可访问。在服务中,我想替换以前的翻译。 下面是一些代码: .config(['$translateProvider', function ($translateProvider) { $translateProvider.useStaticFilesLoader({
.config(['$translateProvider', function ($translateProvider) {
$translateProvider.useStaticFilesLoader({
prefix: 'i18n/',
suffix: '.json'
});
$translateProvider.preferredLanguage('it');
}]);
在我的翻译服务中,我需要
angular.module('myapp')
.factory('TranslateService', ['$translate', $translateProvider, function($translate, $translateProvider) {
$mydata = { "LABEL": "Label" };
$translateProvider.translations('it', mydata); // injection problem
$translate.somethingLike_getProvider().translations('it', mydata); // doesn't exist
}]);
诀窍是存储在一个可以稍后访问的变量中:
var-app=angular.module('app',['pascalprecht.translate']);
var提供者=null;
app.config(函数($translateProvider){
提供者=$translateProvider;
$translateProvider.translations('en'{
标题:“你好”,
傅:“这是一段。”
});
$translateProvider.preferredLanguage('en');
});
应用程序工厂('inlineLoaderFactory',函数($q){
返回功能(选项){
var deferred=$q.deferred();
延迟。解析(选项[options.key]);
回报。承诺;
};
});
应用控制器('MainCtrl',函数($scope,$q,$translate){
$scope.override=函数(){
provider.useLoader('inlineLoaderFactory'{
嗯:{
标题:“你好,我的朋友”,
FOO:'TLDR',
自定义:“新密钥”
}
});
$translate.refresh();
};
});代码>