2013-09-23 51 views
5

我有一個應用程序設置有2個狀態,A型和AB做到這樣:AngularJS UI路由器的狀態不會刷新回

$stateProvider.state('A', { 
     url: "/A/{aId}", 
     controller: 'AController', 
     templateUrl: function($stateParams) { 
      return "/A/" + $stateParams.aId + "/layout"; 
     } 
    }).state('A.B', { 
     url: "/B/{bId}", 
     controller: 'BController', 
     templateUrl: function($stateParams) { 
      return "/A/" + $stateParams.aId + "/B/" + $stateParams.bId+ "/layout"; 
     } 
    }); 

當我狀態很AB(網址將不會停如#/ A/12/B/123),然後使用瀏覽器的後退按鈕或轉換回到url更改,狀態AB被清除,但狀態A不會恢復。據我可以告訴控制器沒有觸發。所以如果我在A/12/B/123並且回到A/12沒有任何反應,但是如果我回到A/13(使用transitionTo),它會呈現。

在angular-ui-router項目的示例應用程序中,此方案工作正常,所以我認爲在我的設置中可能有問題。我認爲值得一提的是,在index.html上,我有一個UI視圖,其中狀態A和狀態A的模板有另一個UI狀態加載狀態AB

如果有人可以幫忙,我會非常感激

+1

我相信還是有這個開放式問題:https://開頭的github .com/angular-ui/ui-router/issues/52 –

+0

是的,我看到了這個問題,但我描述的行爲在他們的示例應用程序中運行良好。 http://angular-ui.github.io/ui-router/sample/ – Grig

+0

你可以發佈一個演示這個問題的Plunkr嗎?這是非常標準的行爲,通常在所有情況下都能正常工作。 –

回答

0

您是否嘗試過使用這樣的:

$ state.reload()

它迫使重新加載當前狀態的方法。所有的決策,重新解決,事件不會再次發射器和控制器重新實例

這只是一個別名:

$state.transitionTo($state.current, $stateParams, { 
     reload: true, inherit: false, notify: false 
    }); 
相關問題