5

我有一个具有 2 个状态的应用程序设置,A 和 AB 以这种方式完成:

$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 )并使用浏览器的后退按钮返回或 transitionTo 网址更改时,状态 AB 被清除但状态 A 不会渲染回来。据我所知,控制器没有被触发。

因此,如果我在 A/12/B/123 并返回 A/12 什么都不会发生,但是如果我返回 A/13(使用 transitionTo )它会呈现。

在 angular-ui-router 项目的示例应用程序中,此场景运行良好,因此我认为我的设置可能有问题。我认为值得一提的是,在 index.html 上,我有一个加载状态 A 的 ui-view,而状态 A 的模板有另一个加载状态 AB 的 ui-view

如果有人可以提供帮助,我将不胜感激

4

1 回答 1

0

您是否尝试过使用它:

$state.reload()

它是一种强制重新加载当前状态的方法。所有解析都重新解析,事件不会重新触发,并且控制器会重新实例化

这只是一个别名:

$state.transitionTo($state.current, $stateParams, { 
      reload: true, inherit: false, notify: false 
    });
于 2016-12-02T11:27:56.937 回答