2013-04-22 61 views
4

我在我的backbone.js应用程序中有一个自定义sync方法。我所有的模型都会调用这个方法,但是由于我在这个方法中覆盖了success,我不再调用各个模型的成功方法。这就是我的意思是 - 下面是我的自定义同步方法:Backbone:用自定义同步方法调用成功

app.customSync = function(method, model, options) { 
    var success = options.success, 
     error = options.error, 
     customSuccess = function(resp, status, xhr) { 
      //call original, trigger custom event 
      if(con)console.log('in custom success'); 
      success(resp, status, xhr); 
     }, 
     customError = function(resp, status, xhr) { 
      if(con)console.log('in custom error'); 
      error(resp, status, xhr); 
     }; 
    options.success = customSuccess; 
    options.error = customError; 
    Backbone.sync(method, model, options); 
}; 
Backbone.Model.prototype.sync = app.customSync; 

这里是我试图调用从模型成功挽救一个例子:

this.model.save({ 
    success:function(model, response){ 
     if(con)console.log('this is never called'); 
    } 
}); 

有谁知道我还能自定义同步与自定义成功方法,并从我个人的保存调用成功?

作为一个方面说明,我试图在model.save调用successmsuccess,但msuccess在自定义同步是不确定的。

+2

我可能会误会你在找什么,但似乎工作,因为是http://jsfiddle.net/nikoshr/XwfTB/ – nikoshr 2013-04-22 15:52:55

+0

@nikoshr我没有像在jsfiddle中那样在保存中放置一个空对象。如果你把答案放在答案中,我可以接受它。 – coder 2013-04-22 15:55:44

回答

4

Model.save的第一个参数是您希望修改的属性的散列值,选项位于第二位,并保存成功/错误回调。

尝试

this.model.save({}, { 
    success: function() { 
     console.log('save success'); 
    } 
}); 

而且小提琴看到这个工作http://jsfiddle.net/nikoshr/XwfTB/