如何获取新创建的记录?

时间:2016-01-31 09:33:44

标签: ember.js

我有以下用例:'我创建资源'项目'在控制器中的动作处理程序中,之后我想转换到新创建的route'。我的意图看起来像这样:

 createNewProject: function() {
    this.store.createRecord('project', {
      title:                    this.get('title'),
      description:              this.get('description'),
      full_description:         this.get('full_description')
    }).then((project) => {
       this.transitionToRoute('projects.show', project);
    });
  }

但它没有这样做,因为createRecord据我所知还没有返回promise,可能还有一些解决方法吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

createRecord返回记录本身,因为它不需要做网络请求。 要执行网络请求,您需要在新记录上调用.save()并返回一个promise。这将有效,但不会将您的记录保存到服务器:

createNewProject: function() {
  let project  = this.store.createRecord('project', {
    title:                    this.get('title'),
    description:              this.get('description'),
    full_description:         this.get('full_description')
  })

  this.transitionToRoute('projects.show', project);
}

在致电project.save()之前保存录音通话transitionToRoute。这将保存您的Record async并立即转换到新Route。要在转换之前等待成功保存,请执行以下操作:

project.save().then(() => this.transitionToRoute(project));