ember.js EmberJS:如何从路由重定向,保留查询参数

3j86kqsm  于 2022-11-05  发布在  其他
关注(0)|答案(2)|浏览(516)

我想从路由/new重定向,并保留new路由的查询参数:
据我所知,访问queryParams的唯一地方是在路由的model钩子内。
但是我想在beforeModel钩子中重定向:

import Ember from "ember";

export default Ember.Route.extend({
    /**
     * @@override
     * Implicitly create a new applicant, redirecting to the generated ID at /applications/#{id}
     * @param transition
     */
    beforeModel: function(transition) {
        var emptyApplicant = this.store.createRecord("applicant",
                {isPrimary: true}
            ),
            emptyApplication = this.store.createRecord("application");
        emptyApplication.set("applicant", emptyApplicant);
        emptyApplicant.save().then((savedApplicant) => {
            emptyApplication.save().then((savedApplication) => {
                this.transitionTo("applications", savedApplication);
            });
        });
    }
});

当上面的代码工作时,转换将完成而不保留查询参数。例如,导航到applicants/new?agent=35将不保留查询参数中的agent=35,而只是重定向到applicants/new
如何从Ember应用中的beforeModel挂钩访问queryParams对象?

y0u0uwnf

y0u0uwnf1#

您应该能够将查询参数传递给transitionTo,沿着所示:

this.transitionTo("applications", savedApplication, {
  queryParams: transition.queryParams
});
fcg9iug3

fcg9iug32#

在Ember的更新版本中,包含查询参数. Transition的transition object has a to property不再具有queryParams属性
例如,在beforeModel中重定向到index路由,可能如下所示:

beforeModel(transition){
  super.beforeModel(...arguments);
  transition.abort();
  this.transitionTo('index', {
    queryParams: transition.to.queryParams
  });
}

相关问题