我已经按照教程here的3个部分进行了操作,一切正常,只有一个例外。当我去"添加书"页面,然后导航到"列出书籍"没有保存,书籍列表由空项扩展。我怀疑原因是以下代码,其中新模型在保存之前创建,如果不保存表单则不删除。任何想法如何解决这个问题?
Embertest.BooksNewRoute = Ember.Route.extend({
model: function() {
return this.get('store').createRecord('book');
},
actions: {
create: function() {
var newBook = this.get('currentModel');
newBook.save();
this.transitionTo('books');
}
}
});
答案 0 :(得分:2)
来自http://emberjs.com/api/classes/Ember.Route.html#method_deactivate
在您的路线上添加deactivate
功能。在退出当前路线之前调用此方法。因此,您可以回滚刚刚在模型中创建的记录,如下所示:
model: function(params) {
return this.get('store').createRecord('book');
},
deactivate: function() {
this.currentModel.rollback();
},
答案 1 :(得分:1)
我通过附加一个动作来解决这个问题,将记录销毁到willTransition事件,如下所示。如果这是正确的方法,有人会评论吗?
Embertest.BooksNewRoute = Ember.Route.extend({
model: function() {
return this.get('store').createRecord('book');
},
actions: {
willTransition: function() {
if (this.currentModel.get('isNew')) {
this.get('currentModel').deleteRecord();
};
},
create: function() {
var newBook = this.get('currentModel');
newBook.save();
this.transitionTo('books');
}
}
});