javascript - 全局监听 Backbone.js Model.save

标签 javascript events backbone.js

我想在 Backbone 的原生 Model.save() 方法中附加一个记录成功和错误的自定义日志记录方法。我知道在每个模型的基础上,我可以这样称呼:

myModel.save().success(function() {
    // do something cool
});

但不是调整对各种模型的保存事件的每次调用,我想简单地监听 any 模型上的保存事件。我想我想避免的一种方法实际上是修改 Backbone.Model.prototype.save 方法(尽管如果有人有一种优雅的方法来做到这一点,我愿意接受)。

关于如何创建这样的事件监听器有什么想法吗?

最佳答案

如果您的所有模型/集合都使用默认的 Backbone.sync 方法,您可以创建一个新的同步方法来进行日志记录。

   var originalSync = Backbone.sync;
   var loggingSync = function(method, model, options) {
         // call original Backbone.sync
         var promise = originalSync(method, model, options);
         promise.done(function() {
            // if method is 'update' or 'create', log success
         });
         promise.fail(function() {
            // if method is 'update' or 'create', log failure
         });
         return promise;
      };
   Backbone.sync = loggingSync;

默认情况下,Model.sync 和 Collection.sync 都代理到 Backbone.sync,因此如果您使用默认同步,此更改会处理它。

关于javascript - 全局监听 Backbone.js Model.save,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14530496/

相关文章:

c# - Javascript 无法在 ASP.NET C# 中获取 ElementById

javascript - 自定义排序 Backbone 集合

ruby-on-rails-3 - 文件上传和backbone.js + Rails

javascript - 文件选择器 : How to pick an audio file based on users choice and play using a button

javascript - 是否可以在 Meteor 中写入 settings.json?

javascript - 处理器音频JavaScript HTML5

java - 如何将 Spring Application Context 事件桥接到其他上下文

javascript - Marionette - modelEvents 不起作用

javascript - MVC下如何使用Lightbox

javascript - 如果长度是偶数,为什么细虚线显示为实线?