2016-03-04 72 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以下。 –

相關問題