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