我在简单的Web应用程序中使用Backbone来管理集合和模型。 应用程序有一个事件管理器,可以监听一些Backbone事件并显示正确的消息。例如,当模型被添加到集合或编辑时,我显示消息"模型被添加"和"模型编辑"。
但是当我从集合中删除模型时,我遇到了一个问题。 Backbone在删除过程中生成下一个事件:
1)请求 - " DELETE"之后的事件请求服务器 2)销毁 - 模型被删除。 3)删除 - 模型已从所有集合中删除 4)同步 - 模型同步
我有这样的代码:
onSave: function () {
console.log("Model was saved");
},
onRemove: function() {
console.log("Model was removed");
}
Backbone.Notifications.on('sync', this.onSave, this);
Backbone.Notifications.on('remove', this.onRemove, this);
所以当我从集合中删除模型时,我收到了2条消息。第一个是"模型被删除"第二个是"模型已保存"。 如何防止邮件重复或使用什么代码结构向用户显示所有CRUD操作的消息?谢谢。
答案 0 :(得分:0)
sync
。当您销毁模型时,首先从集合中移除模型,触发onRemove处理程序,然后从服务器调用sync
模型DELETE
,它将触发第二个事件处理程序。
您可以重载同步以侦听正在执行的CRUD操作并记录下来:
var sync = Backbone.prototype.sync;
Backbone.prototype.sync = function (method, item, options) {
console.log('Method called was: ', method);
sync.apply(item, arguments);
};
答案 1 :(得分:0)
要做的就是走向成功的路线:
model.destroy({
success: function(){
alert('Model deleted');
}
});
只有在处理完DELETE后服务器发送200时才会触发此操作。