在全球范围内收听Backbone.js Model.save

mbe*_*ley 2 javascript events backbone.js

我想Model.save()使用自定义日志记录方法追加Backbone的本机方法,该方法记录成功和错误.我知道在每个型号的基础上我可以称之为:

myModel.save().success(function() {
    // do something cool
});
Run Code Online (Sandbox Code Playgroud)

但是,我不想调整对各种模型的保存事件的每次调用,而是只想在任何模型上监听保存事件.我认为我想避免的Backbone.Model.prototype.save一种方法实际上是修改方法(尽管如果某人有一种优雅的方式来做到这一点,我会对它开放).

有关如何创建这样的事件监听器的任何想法?

Pau*_*cke 6

如果所有模型/集合都使用默认的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;
Run Code Online (Sandbox Code Playgroud)

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