AngularJS ui-router状态不会在后面刷新

时间:2013-09-23 18:01:40

标签: angularjs angular-ui-router

我的应用程序设置有2个状态,A和A.B这样做:

$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状态时(url会像#/ A / 12 / B / 123那样)并使用浏览器的后退按钮返回或者转换为url更改,状态AB被清除但是状态A不渲染。据我所知,控制器没有被触发。

所以如果我在A / 12 / B / 123并且回到A / 12没有任何反应,但是如果我回到A / 13(使用transitionTo)它会渲染。

在angular-ui-router项目的示例应用程序中,这种情况正常,所以我认为我的设置可能有问题。我认为值得一提的是,在index.html上,我有一个ui-view,它可以获得状态A,而状态A的模板有另一个ui-view,可以加载状态A.B

如果有人可以提供帮助,我会非常感激

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用此功能:

<强> $ state.reload()

它强制重新加载当前状态的方法。重新解析所有结算,不重新触发事件,并重新控制控制器

这只是:

的别名
$state.transitionTo($state.current, $stateParams, { 
      reload: true, inherit: false, notify: false 
    });