灰烬路由器 - 确定路由/资源是否是当前路由的子节点

时间:2014-11-21 17:26:59

标签: javascript ember.js ember-router

有没有办法可以确定给定路线是否是当前路线的子路线?

我在路由中使用willTransition挂钩来确定当用户从此路由转换时是否应显示数据丢失确认消息。如果用户在各种子资源和该资源的路由器映射中包含的路由之间进行转换,我不希望执行此数据丢失确认,但我找不到一种方法来确定我在willTransition中给出的转换是否是this.routeName。

有什么建议吗?

路由器:

Router.map(function() {
   this.route('some-route')
   this.resource('parent-resource', function() {
     this.route('child-route');
     this.resource('child-resource', function() {
       this.route('child-resource-route1');
       this.route('child-resource-route2');
     }
   }
});

ParentResourceRoute:

Ember.Route.extend({
   actions: {
      willTransition: function(transition) {
        // if transition is not a child of this.routeName display a confirmation alert if there is dirty data 
      }
   }
});

1 个答案:

答案 0 :(得分:1)

怎么样

Ember.Route.extend({
 actions: {
  willTransition: function(transition) {
    if (transition.get('targetName').indexOf(this.get('routeName')) === false) {
      // moving to a sibling or higger route
    }
  }
 }
});

可能需要根据您的路线名称进行调整。