Creating a custom sync() method in backbone.
I would like to do this the “right” and interfere with Backbone’s normal functions as little as possible.
This is the code that I have so far:
var CustomSyncModel = Backbone.Model.extend({
sync:function(method, model, options){
var params = {
type: 'POST'
url: model.url(),
error: function(jqXHR, textStatus, errorThrown){
alert('error');
},
success: function(data, textStatus, jqXHR){
model.parse(data);
}
};
// Got this from line 1359 in Backbone.js developement library
// version 0.9.2:
$.ajax(_.extend(params, options));
}
});
The issue that I am having is that the line: $.ajax(_.extend(params, options)); seems to be overwriting the custom success and error functions that I created. But I’m also concerned about interfering with any custom callbacks or other functionality that may have been specified elsewhere in the application that is using this model.
What is the “correct” way to go about overriding the Backbone’s sync() method?
Thanks!
If you look at
Model#fetchyou’ll see the usual approach that Backbone uses:So Backbone just replaces the function with a new one that calls the original. In your case, you’d have something like this:
BTW, your
model.parse(data);in yoursuccesshandler probably doesn’t do anything useful,parseshould just be a simple filter so you’d want to do something (such as amodel.setcall) with themodel.parse(data)return value.