防止从当前路由转换出来,但不能转换到子路由?

时间:2014-06-03 14:03:09

标签: ember.js

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

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

1 个答案:

答案 0 :(得分:0)

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

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