应用程序初始化期间应始终调用AngularJS ui.router根状态

时间:2016-03-04 06:38:45

标签: angularjs angular-ui-router

我正在使用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

如何确保首次使用任何网址加载应用时,本地化代码应执行而不是绕过。

2 个答案:

答案 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将确保您的本地化工作将在加载控制器之前完成。