【问题标题】:EmberJS: How to Redirect from Route, Keeping Query ParamsEmberJS:如何从路由重定向,保留查询参数
【发布时间】:2015-07-10 17:07:26
【问题描述】:

我想从路由 /new 重定向,并保留 new 路由的查询参数:

据我所知,访问queryParams 的唯一位置是在路由的model 挂钩内。

但我想重定向到beforeModel hook:

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 对象?

【问题讨论】:

    标签: redirect ember.js ember-data


    【解决方案1】:

    您应该能够将query parameters 传递给transitionTo,类似于:

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

    【讨论】:

      【解决方案2】:

      在更现代的 Ember 版本中,transition object has a to property 包含查询参数。过渡不再有 queryParams 属性

      例如,beforeModel 中的index 路由重定向可能如下所示:

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

      【讨论】:

        猜你喜欢
        • 2019-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-26
        • 2022-11-30
        • 2023-04-01
        • 2015-01-07
        • 2017-06-03
        相关资源
        最近更新 更多