在嵌套视图顶部使用嵌套状态关闭模式时,ui-router粘滞状态刷新

时间:2015-01-18 22:18:28

标签: angularjs angular-ui-router angular-ui-router-extras

以下是我的app结构的子集以及模态结构。 应用结构:

.state ('A',{
  abstract: true,
  sticky:true,
  views:{
  '@ ':{  
    template:'<div ui-view="container-a"></div> <div ui-view="container-b"></div>',                                                             controller: BController
     }
   }
})

// A的子节点,在同一个配置文件中定义了点符号(。)

.state(A.a,{
  views:{
    'container-a':{templateUrl:'some.html'},
    'container-b':{templateUrl:'anothertemplte.html'}
  }
});

在我的第二个配置文件中我有类似的状态配置,但是这里状态B是状态Aa的子节点,由父属性定义,因为我不想让长字符串代表继承层次结构(AaB,因此我有一系列的状态嵌套相似)

.state ('B',{
  abstract: true,
  parent: 'A.a',
  views:{
   '@':
     {
       template: <div ui-view="abc"></div><div ui-view="xyz"> /div>,
       controller:BController
     }
   }
})
.state(B.b,{
  views:{
   'abc':{templateUrl:'some.html'}, 
   'xyz':{templateUrl:'anothertemplte.html'}
  }
});

模态结构: 我有一个抽象的全局模态,有一个关闭按钮和一个ui-sref托管内部的其他模板,如下所示:

$stateProvider
  .state('global-modal',{ 
    url: '',
    abstract: true,
    onEnter:  ['$modal', function($modal) { 
       $modal.open({
        template: '<html for close button> <div ui-sref="childModal" ',
        controller: 'GlobalController',
        backdrop:'static',
        keyboard:false 
        }) 
     }] 
  })  
.controller('GlobalController',  ['$scope', '$state', '$previousState', '$modalInstance',
  function ($scope, $state, $previousState, $modalInstance) {
    $previousState.memo("modalInvoker"); 
      $scope.cancel = function () {
        $modalInstance.dismiss('cancel');
        $previousState.go("modalInvoker"); 
      };
  }]);

然后有2个嵌套状态,它们在glo-mode莫代尔的ui-view = childModal中加载如下 (简而言之)

state( 'C',{
parent: global-mdoal,
 views:{'childModal':{template:'C_template.html', controller: 'CController' } }
})
state('D',{
parent: C,
views:{'childModal':{template:'D_template.html', controller: 'DController' } }

现在问题:

如果我处于Bb状态并打开模态它将加载C并通过关闭它粘性工作正常,但如果再次从Bb打开模态并且这次在背景下从C导航到子状态D它将导航到我的父状态(Aa)谁关闭模态将导航我到Bb但它将刷新页面。 (如果我在模式中从C到D进行导航,在Aa顶部,这是我的顶级状态,它不会刷新页面,因为从C到D的导航总是在背景后面加载Aa,所以在模态转换时没有刷新在顶级状态Aa之上,但是在Aa的子状态之上的模态中的过渡像Bb等将导致referh和粘性不会起作用[甚至尝试粘贴:在每个状态中都是真的但是同样的行为]

1 个答案:

答案 0 :(得分:0)

你定义的C状态&#34; golbal-mdoal&#34;检查你的代码是否错误或者你输错了