0
我想在服务中使用angular translate。我试图使用translatePartialLoader加载它,然后刷新,但没有成功我得到空的对象在视图中。以下是我的代码。
***服务*
angular
.module('common')
.factory('ConversationService', conversationService);
function conversationService($translate, $translatePartialLoader) {
$translatePartialLoader.addPart('home');
$translate.refresh();
var asdsa;
asdsa = $translate('home.test');
console.log(asdsa);
/* Tried with then also no success..
$translate("home").then (function (home) {
asdsa = home;
console.log(asdsa);
});*/
}
})();
app.js在那里我定义$翻译
angular.element(document).ready(function() {
angular.bootstrap(document, ['app']);
});
function config($stateProvider, $urlRouterProvider, $logProvider, $httpProvider, $translateProvider) {
$urlRouterProvider.otherwise('/login');
$logProvider.debugEnabled(true);
$httpProvider.interceptors.push('httpInterceptor');
$translateProvider.useLoader('$translatePartialLoader', {
urlTemplate: '/src/app/modules/{part}/resources/{lang}.json'
});
$translateProvider.preferredLanguage('en');
en.json文件
{
"home" :{
"test": "Teeeeeeeeeeeeeeeeeeest",
}
}
在控制器我正在使用的决心方法translatePartialLodaer和工作,但这种方式在那里我需要服务,它不工作。以下是我在使用的路线中的使用方法。
resolve: {
translatePartialLoader: ['$translate', '$translatePartialLoader', function ($translate, $translatePartialLoader) {
$translatePartialLoader.addPart('home');
return $translate.refresh();
}]
}
是的,我试过了。如果我理解正确,如果我尝试这样做:$ translatePartialLoader.addPart('home'); $ translate.refresh(); var homeTranslation; (translation){ homeTranslation = translation; console.log(homeTranslation); }); homeTranslation应该具有在en.json中定义的所有值,但它是未定义的。它永远不会进入。然后 – Bukic
您的应用程序是否收到翻译文件?检查调试器的网络tav –
在调用此服务之前,我可以在网络选项卡中看到en.json文件。也正如我之前写道,在路线中使用解析方法进行加载并在视图中使用它的效果很好。 – Bukic