如何在Backbone模型被删除后显示消息?

时间:2016-01-21 10:18:48

标签: backbone.js

我在简单的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操作的消息?谢谢。

2 个答案:

答案 0 :(得分:0)

任何CRUD操作都会调用

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时才会触发此操作。

相关问题