2015-12-17 64 views
0

我有一個ui-router的問題,我不能完全把我的手指放在。我可以點擊一個鏈接(在我的應用程序的登錄頁面上)並導航到第二個頁面(用戶可以註冊的頁面)。第二頁上有一個取消按鈕,只需將用戶導航回第一頁即可。迄今爲止都很好。

如果我再次點擊相同的鏈接,用戶似乎留在同一頁面(即登錄頁面),但我已經添加了一個'狀態改變'處理程序到我的應用程序(它只是記錄過渡到控制檯),並可以看到實際發生的情況是應用程序似乎轉換到第二個頁面,然後再返回。除了演示流程之外,以下內容沒有什麼意義。你可以看到狀態改變的開始,結束及視圖負荷再次啓動,並轉換回「authentication.login」

Start state change : {authentication.login} to {authentication.registration} 
View content loading 
End state change success : {authentication.login} to {authentication.registration} 
View content loaded 
Start state change : {authentication.registration} to {authentication.login} 
View content loading 
End state change success : {authentication.registration} to {authentication.login} 
View content loaded 

注意之前:這兩個頁面是一樣的抽象節點的兄弟姐妹。

任何想法,爲什麼會發生這種情況?

注意:狀態配置如下:

.state("authentication", { 
    url : "/auth", 
    abstract : "true", 
    templateUrl : "app/main/common/html/templates/simple-template.html", 
}) 

.state("authentication.login", { 
    url: "/login", 
    views: { 
     "main": { 
      templateUrl : "app/main/authentication/html/login.html", 
      controller: "LoginController" 
     } 
    } 
}) 

.state("authentication.registration", { 
    url: "/registration", 
    views: { 
     "main": { 
      templateUrl : "app/main/authentication/html/registration.html", 
      controller: "RegistrationController" 
     } 
    } 
}) 

回答

0

你有任何 rootScope $上(「$ stateChangeStart」
邏輯在你的應用程序,導致狀態轉換 通常的邏輯會。擺在這裏踢用戶返回到登錄頁面,如果用戶沒有auth'd 胡亂猜測,但最樂觀的估計我可以給提供的信息。 感謝

另一種思路,如果去掉狀態更改處理程序確保一切正常?

+0

我很確定我們沒有,但只是爲了確保我檢查。我能看到的唯一$ stateChangeStart引用是在我自己的狀態更改處理程序中,它只記錄控制檯的狀態更改(當然還有角度庫)。我偶爾使用我的處理程序作爲調試工具。 爲了確定這不會導致問題,我將它從模塊中完全刪除。仍然得到相同的行爲。我會用這兩個屏幕的配置更新主要問題,以防萬一我做錯了什麼。 謝謝 –

+0

我相信我是正確的說一個抽象狀態本身不存在,但用於提供所有兒童狀態的通用配置。我認爲這是說authentication.login和authentication.registration將使用抽象狀態中定義的相同模板。然而,爲抽象狀態定義URL是毫無意義的(如果我的想法是正確的),因爲兩個孩子都會覆蓋它。但是,不確定這是否會導致您遇到的問題。還應該引用「真」嗎? – danday74