Angular js 在刷新时在 ng-src 脚本中使用 $rootScope 失败
Angular js using $rootScope in ng-src script on refresh fails
我正在创建一个国际化项目,其中标签将在 /conf/lang/lang_{{lang}}/labels.js 中,而标签将包含在 index.html 中。
lang - app.run() 中的 rootscope 变量设置。
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 内容加载后加载。
有人帮我解决这个问题!!!
是的,当您尝试重新加载页面时,所有内容都会被破坏。看看这个
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);
}
}]);
我正在创建一个国际化项目,其中标签将在 /conf/lang/lang_{{lang}}/labels.js 中,而标签将包含在 index.html 中。 lang - app.run() 中的 rootscope 变量设置。 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 内容加载后加载。 有人帮我解决这个问题!!!
是的,当您尝试重新加载页面时,所有内容都会被破坏。看看这个
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);
}
}]);