Angular ui-router使用嵌套视图重定向回父状态

时间:2015-11-04 17:26:06

标签: angularjs angular-ui-router

我在Angular中有一个路由器:

var scenarioManagementModule = angular.module( 'scenarioManagementModule', ['ngResource', 'scenarioModule'])
.config(['$stateProvider', '$urlRouterProvider',
  function( $stateProvider, $urlRouterProvider){
    $stateProvider.state( 'scenario_management', {
        url:         '/scenario_management',
        templateUrl: 'index.html',
        controller:  function( $scope, $state ) {
            $state.transitionTo('scenario_management.scenarios', { reload: true, inherit: false, notify: true });
        }
    });

    $stateProvider.state( 'scenario_management.scenarios', {
        url:         '/scenarios',
        templateUrl: '/scenarios.html',
        controller:  'ScenarioListController',
        resolve:     {
            scenarios_data:  function( $stateParams, Scenario ){
                return Scenario.list();
            }
        }
    });

    $stateProvider.state( 'scenario_management.scenarios.create', {
        url:            '/create',
        templateUrl:    '/scenario.create.html',
        controller:     'ScenarioCreateController',
    });
}]);

我的观点设置正确。所有父模板在正确的位置都有自己的ui视图,当我尝试通过在浏览器中粘贴网址来访问创建页面时,它可以完美地运行。

但是,当我以编程方式尝试使用以下代码调用create状态时,会发生一些奇怪的事情:

$state.transitionTo('scenario_management.scenarios.create', $stateParams, { reload: true, inherit: false, notify: true });

通过console.log,我可以看到正在按需加载的创建状态,但是当这个状态完成加载时,之后会立即再次开始加载它的父状态。结果,创建状态再次消失。而且根据浏览器的网址,我现在再次处于父状态。

我做错了吗?有人能告诉我发生了什么,我怎样才能确保创建状态保持加载状态?

1 个答案:

答案 0 :(得分:2)

如果您不想正确加载此状态,可以使用abstract:true。