2016-09-16 37 views
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(); 
       }] 
       } 

回答

0

$翻譯是異步FN,你應該使用它像

$translate('token.token2').then(function(translation){ 
}); 
+0

是的,我試過了。如果我理解正確,如果我嘗試這樣做:$ translatePartialLoader.addPart('home'); $ translate.refresh(); var homeTranslation; (translation){ homeTranslation = translation; console.log(homeTranslation); }); homeTranslation應該具有在en.json中定義的所有值,但它是未定義的。它永遠不會進入。然後 – Bukic

+0

您的應用程序是否收到翻譯文件?檢查調試器的網絡tav –

+0

在調用此服務之前,我可以在網絡選項卡中看到en.json文件。也正如我之前寫道,在路線中使用解析方法進行加載並在視圖中使用它的效果很好。 – Bukic

相關問題