Ember:从控制器获取路由实例

Jer*_*ick 32 ember.js

我有一个多步骤流程,用户可以顺序完成或直接跳转到某个部分(如果两者之间的部分已完成).我认为这个逻辑应该在Route对象中.但是,从控制器内部,我如何访问路由实例.例如,能够在控制器中执行类似的操作是理想的:

App.Flow = Em.ObjectController.extend({
  submit: function(){
    // Validation and XHR requests
    // ...

    // Go to the next step
    route.goToNextStep();
  }
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*tti 39

在控制器内,您可以通过访问路由器this.get('target').所以this.get('target').send('goToNextStep')应该工作.

像这样:

App.Flow = Em.ObjectController.extend({
  submit: function(){
    // ...
    this.get('target').send('gotoNextStep');
  }
}

App.FlowRoute = Ember.Route.extend({
  events: {
    gotoNextStep: function(){
      // ...
      this.transitionTo(routeName);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)