我在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,我可以看到正在按需加载的创建状态,但是当这个状态完成加载时,之后会立即再次开始加载它的父状态。结果,创建状态再次消失。而且根据浏览器的网址,我现在再次处于父状态。
我做错了吗?有人能告诉我发生了什么,我怎样才能确保创建状态保持加载状态?
答案 0 :(得分:2)
如果您不想正确加载此状态,可以使用abstract:true。