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

Sha*_*awn 1 ember.js ember-data ember-cli

所以我是Ember的新手(使用ember-cli 3.0.4),并试图了解如何对我做什么是正常的事情.我在组件内部有一个表单,用户更新信息,然后单击"保存".我已经构建了一个动作,组件在单击"保存"按钮时调用该动作,并且该动作在模型对象上调用save().到现在为止还挺好.

我的问题是,当save()promise完成时,我想重定向到另一个页面.我无法弄清楚如何做到这一点.动作的emberjs指南并没有提到重定向,只有路由模块似乎提到了重定向.

显然,有一种"苦恼"的做事方式,我还不知道,但到目前为止,我无法弄清楚那是什么.在Ember中保存完成之后,简单的重定向如何?

组件代码:

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

路线代码:

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

谢谢!

don*_*che 5

要从组件转换或重定向,您可以注入RouterService并使用transitionToreplaceWith.这是一个例子:

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')
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

另请参阅https://guides.emberjs.com/v3.1.0/routing/redirection/.希望能帮助到你.