应用程序初始化时应始终调用AngularJS ui.router根状态
我正在使用AngularJS处理Web应用程序,并使用ui.router进行路由。应用程序初始化时应始终调用AngularJS 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
}
});
在初始化我从服务器
加载本地化JSON如果我打下面的网址这一切工作正常 http://localhost/app/index.html
但是如果我打以下URL或任何其他状态直接本地化文件不加载 http://localhost/app/index.html#/login
如何确保首次使用本地化代码应执行且未被绕过的任何URL加载应用程序时。
/ Bu default go to state -
angular.module('yourModuleName').run(["$location", function ($location) {
$location.url('/');
}]);
所以,当你刷新或者把你的web应用程序,您的网站将转到URL /
,所以它应该调用你的状态,init
工作。
或者你可以使用$state
在开始
/ Bu default go to state -
angular.module('yourModuleName').run(["$state", function ($state) {
$state.go('init');
}]);
去一个国家它非常简单有一个属性“解决”你可以使用它。 在你的父母,你的状态可以这样写 -
.state('parentState', {
resolve : {
localize : function() {
//Localization code here
}
}
};
决心将确保加载控制器之前,你的本地化工作将完成。
在这种情况下,我将不得不在所有州增加本地化,并且有将近50个州。有没有更简单的方法,例如在app.run中添加某些内容。 –
为什么所有状态如我所说添加到您的父母状态只有它会工作。 你应该有一个正确的状态层次。 喜欢 - 应用程序,app.user,app.user.details,app.login,这里的应用程序是父母的状态。 –
有多个父状态。我没有将所有状态分组在1以下。 –
您是否检查了此代码?这段代码是不是会将每个页面的刷新重定向到“/”?我不认为它是一个好方法。 –