在服务中使用$ translate不起作用

时间:2016-09-16 11:01:53

标签: javascript angularjs translate angular-translate

我想在服务中使用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 我定义$ translate

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();
                }]
              }

1 个答案:

答案 0 :(得分:0)

$ translate是async fn,你应该像

一样使用它
$translate('token.token2').then(function(translation){
});