可以在ui.router过渡到粘性状态时触发哪些事件?

Ast*_*ant 5 angularjs angular-ui-router

我有一个AngularJS应用程序,它使用ui.router和插件ui.router-extras,特别是粘性状态模块.这允许我从给定的父状态向下缓存渲染的DOM.

问题是,当我转换到我设置为"粘性"(即缓存)的状态时,与该状态关联的事件都不会触发.看起来,OnEnter和Resolve都已经运行并且被缓存了.

states.push({ name: 'root.planner',             url: 'planner',
              abstract: true,
              views: {
                'planner-tab':  {
                  controller: 'planner',   
                  templateUrl: 'views/planner/_planner.html'
                }
              },
              sticky:true,
              deepStateRedirect: true
            });
states.push({ name: 'root.planner.home',   url: '',
              controller: 'planner.home',
              templateUrl: 'views/planner/_planner.home.html',
              resolve: {
                'promiseDays': function(PlannerService){
                  return PlannerService.getDays();
                }
              },
              onEnter: function(StatusService){
                //set editable
                StatusService.toggleEditIcon(true);
              },
              onExit: function(StatusService){
                //set editable
                StatusService.toggleEditIcon(false);
              }
            });
Run Code Online (Sandbox Code Playgroud)

我需要的是允许OnEnter运行的方法或可以为每个州定制的类似事件.理想情况下,这将位于上面的状态配置中(例如,我可以避免对每个stateChangeSuccess进行状态名检查),但我愿意接受建议.

Ast*_*ant 4

从GitHub 上提出的问题来看,Christ T(ui-router-extras 的开发者)提出了这样的建议:

“虽然没有记录,粘性状态将调用 onInactivate 和 onReactivate 回调。请参阅以下行的源代码:”

停用时

重新激活

这对我来说非常有效。