2013-09-23 54 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 
    }); 
相关问题