我有以下用例:'我创建资源'项目'在控制器中的动作处理程序中,之后我想转换到新创建的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
,可能还有一些解决方法吗?
感谢您的帮助。
答案 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));