2016-11-17 82 views
0

我正在创建一个国际化项目,标签将位于/conf/lang/lang_{{lang}}/labels.js中,它将包含在索引中html的。在app.run()中lang - rootcope变量设置。 的index.html

<script ng-src="{{labelUrl}}"></script> 

app.js - 运行()

$rootScope.$on('$locationChangeStart', function (event, next, current) 
    { 

     if($cookieStore.get("config_details") != undefined) 
     { 
      $rootScope.language = $cookieStore.get("config_details").language; 
     } 
     else 
     { 
      $rootScope.language = 'english'; 
     } 
     $rootScope.labelUrl = "conf/lang/lang_"+$rootScope.language+"/labels.js"; 
}) 

该脚本文件是正确加载的URL变化,但是当刷新手动$ rootscope价值破坏和脚本文件被加载后, html内容被加载。 有人帮我解决这个问题!

回答

1

是的,当您尝试重新加载页面时,一切都将被销毁。看看这个

var myApp = angular.module('myApp', ['ngCookies']); 

    myApp.controller('MainController', ['$scope', '$rootScope', '$cookies', '$timeout', function($scope, $rootScope, $cookies, $timeout) { 
     if ($cookies.get('lang')) { 
     $scope.debug = "Browser has got cookies"; 
     $rootScope.language = $cookies.get('lang'); 
     } else { 
     $scope.debug = "Browser does not have cookies"; 
     $timeout(function() { 
      $cookies.put('lang', 'en'); 
      $rootScope.language = 'en'; 
      $scope.debug = "Browser has got cookies"; 
     }, 2000); 
     } 
    }]); 

Example

Try angular-translate

+0

但cookie将可对不对?与我可以重新分配给rootcope na? – Indhu

+0

是的,你是对的。然后,您应该从cookie中获取值并将其设置为之前的范围。 –

+0

okey如何在加载html内容之前做到这一点。 – Indhu