「.sync()」メソッドをオーバーライドしてみてください。Backbone.save() は、渡した成功コールバックをオーバーライドした後、Backbone.sync() に委譲します。モデルの更新はここから行われます。
Backbone.save() メソッドのソースから:
var success = options.success;
options.success = function(resp) {
// Ensure attributes are restored during synchronous saves.
model.attributes = attributes;
var serverAttrs = model.parse(resp, options);
if (options.wait) serverAttrs = _.extend(attrs || {}, serverAttrs);
if (_.isObject(serverAttrs) && !model.set(serverAttrs, options)) {
return false;
}
if (success) success(model, resp, options);
model.trigger('sync', model, resp, options);
};
wrapError(this, options);
method = this.isNew() ? 'create' : (options.patch ? 'patch' : 'update');
if (method === 'patch') options.attrs = attrs;
xhr = this.sync(method, this, options);
「.save()」を呼び出すときにカスタム オプションを渡し、そのオプションを探して、「.sync()」で options.success コールバックをオーバーライドできます。もしかして、こういうこと?
MyModel = Backbone.Model.extend({
sync: function (method, context, options) {
if (options.skipUpdateOnResponse) {
options.success = myCusomSuccessFunction;
}
}
});
myModel = new MyModel();
myModel.save({...}, {skipUpdateOnResponse: true})