【问题标题】:Prevent transition out of current route, but not subroutes?防止从当前路线过渡,但不是子路线?
【发布时间】:2014-06-03 14:03:08
【问题描述】:

在某些情况下,我想阻止用户从活动路由中转换出来,但同时用户应该能够在当前路由的子路由之间转换。我可以使用 willTransition 事件来检测是否启动了转换,但是如何检测转换是退出当前路由还是仅在当前路由的子路由之间转换?

Ember 官方指南在这种情况下没有帮助。 http://emberjs.com/guides/routing/preventing-and-retrying-transitions/

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    可能有更好的方法,但您可以通过检查转换对象来轻松使其工作:

    Em.Route.extend({
    
      actions: {
        willTransition: function(transition) {
          var name = this.routeName;
    
          var isTransitionOut = transition.state.handlerInfos.every(function(item){
            return name !== item.name;
          });
    
          if (isTransitionOut) {
            alert('aborting');
            transition.abort();
          }
        }
      }
    });
    

    http://emberjs.jsbin.com/nilac/1/edit

    【讨论】:

    • 谢谢,我自己也想出了类似的解决方案。
    • 我唯一担心的是,transition.state.handlerInfos 似乎不是公共 API,因为它没有记录。但希望它不会在没有警告的情况下改变:)
    猜你喜欢
    • 2020-12-27
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多