[英]ember.js discard created model if not saving
我在这里按照教程的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');
}
}
});
来自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();
},
我通过将一个破坏记录的操作附加到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');
}
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.