代码之家  ›  专栏  ›  技术社区  ›  Shawn

如何在组件内部完成余烬操作后重定向

  •  2
  • Shawn  · 技术社区  · 8 年前

    因此,我对Ember是全新的(使用Ember cli 3.0.4),尝试理解如何对我做什么是正常的事情。我有一个表单,在一个组件中,用户在其中更新信息,然后单击保存。我构建了一个操作,组件在单击Save按钮时调用该操作,该操作在model对象上调用Save()。到目前为止,一切顺利。

    我的问题是,当save()承诺完成时,我想重定向到另一个页面。我不知道怎么做。《emberjs操作指南》没有提到重定向,只有路由模块似乎提到了重定向。

    显然,有一种“embery”的做事方式我还不知道,但到目前为止我还不知道那是什么。保存后的简单重定向如何在Ember中做得最好?

    组件代码:

    export default Component.extend({
    actions: {
        saveCountry() {
            var self = this;
            if (this.country.get('hasDirtyAttributes')) {
                this.country.save().then(
                    //???
                );
            }
        }
    }
    

    路线代码:

    export default Route.extend({
        model(params) {
           return this.get('store').findRecord('country', params.country_id);
        }
    });
    

    非常感谢。

    1 回复  |  直到 8 年前
        1
  •  6
  •   0skar    8 年前

    要从组件转换或重定向,可以注入 RouterService 并使用 transitionTo replaceWith .以下是一个示例:

    import Component from '@ember/component'
    import {inject} from '@ember/service'
    
    export default Component.extend({
      router: inject(),
    
      actions: {
        saveCountry() {
          // do stuff, validate etc.
          this.get('router').transitionTo('my-route')
        }
      }
    })
    

    另请参见 https://guides.emberjs.com/v3.1.0/routing/redirection/ .希望有帮助。

    推荐文章