2016-03-04 51 views
0

我正在使用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加载应用程序时。

回答

0
/ 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'); 
}]); 
+0

您是否检查了此代码?这段代码是不是会将每个页面的刷新重定向到“/”?我不认为它是一个好方法。 –

0

去一个国家它非常简单有一个属性“解决”你可以使用它。 在你的父母,你的状态可以这样写 -

.state('parentState', { 
     resolve : { 
      localize : function() { 
         //Localization code here 
      } 

     } 
}; 

决心将确保加载控制器之前,你的本地化工作将完成。

+0

在这种情况下,我将不得不在所有州增加本地化,​​并且有将近50个州。有没有更简单的方法,例如在app.run中添加某些内容。 –

+0

为什么所有状态如我所说添加到您的父母状态只有它会工作。 你应该有一个正确的状态层次。 喜欢 - 应用程序,app.user,app.user.details,app.login,这里的应用程序是父母的状态。 –

+0

有多个父状态。我没有将所有状态分组在1以下。 –

相关问题