我正在使用AngularJS处理Web应用程序,并使用ui.router进行路由。
我已配置应用
.state('init', {
url: '/',
controller: 'LocalizationCtrl',
templateUrl: 'partials/common/init.html'
})
.state('login', {
url: '/login',
templateUrl: 'partials/auth/login.html',
controller: 'LoginCtrl',
resolve: {
skipIfLoggedIn: skipIfLoggedIn
}
});
在init中,我从服务器加载本地化json
如果我点击以下网址,则一切正常 http://localhost/app/index.html
但是,如果我直接点击以下URL或任何其他状态,则不会加载本地化文件 http://localhost/app/index.html#/login
如何确保首次使用任何网址加载应用时,本地化代码应执行而不是绕过。
答案 0 :(得分:0)
/ Bu default go to state -
angular.module('yourModuleName').run(["$location", function ($location) {
$location.url('/');
}]);
因此,当您刷新或使用您的网络应用程序时,您的网站将转到网址/
,因此它应该调用您的状态init
才能运行。
或者您可以使用$state
在开始时使用状态
/ Bu default go to state -
angular.module('yourModuleName').run(["$state", function ($state) {
$state.go('init');
}]);
答案 1 :(得分:0)
非常简单,有一个属性“ Resolve ”你可以使用它。 在您的父状态中,您可以写这个 -
.state('parentState', {
resolve : {
localize : function() {
//Localization code here
}
}
};
Resolve将确保您的本地化工作将在加载控制器之前完成。