Ember可选查询参数

时间:2017-03-20 10:17:55

标签: ember.js

我需要使用可选的查询参数,尽管我之前的帖子仍在努力让它发挥作用。

我的应用程序用于发布教学课程。设置是:

  • 用户可以发布教学会话。他们也可以要求教学课程。
  • 如果他们发布会话,我会使用sessions.new路由。在此路由中,模型对象返回具有默认设置的新会话对象。
  • 如果他们回应教学请求,我想将教学请求ID传递给sessions.new路由,以便我可以使用请求中的信息预先填充模型,并将会话链接到请求
  • 由于我使用多页“向导”进行会话创建这一事实很复杂,所以sessions.new路由实际上有多个子路由(sessions.new.wizard1,sessions.new.wizard2等)< / LI>

我目前的设置如下:

路由器:

this.route('sessions', function(){
    this.route('new', function(){
        this.route('wizard1');
        this.route('wizard1');
        this.route('wizard3');
        this.route('from-request', {path: 'from-request/:request_id'});
    })
})

模型在sessions.new路由上定义,并在子路由之间共享。

我想在from-request子路径中执行类似的操作:

afterModel: function(model, transition){
    this.store.findRecord('request', transition.queryParams.request_id).then(function(request){
        model.set('info', request.get('info'));
    });
    this.transitionTo('sessions.new.wizard1');
} 

这似乎根本不起作用。我无法像我期望的那样访问转换对象上的queryParams。此外,我在模型上设置的任何内容似乎都不会在转换后持续存在。

有更好的方法吗?我错过了什么吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

似乎最好将查询参数传递到sessions.new路由并让它处理设置相应的信息。您可以将查询参数设置为transitionTo的一部分,如下所示:https://emberjs.com/api/classes/Ember.Route.html#method_transitionTo