Ответ 1
Магистраль сначала ищет локальную функцию sync
модели, прежде чем перейти к Backbone.sync
.
Backbone.js Документация: функция синхронизации может быть переопределена глобально как Backbone.sync или на более тонком уровне, добавив функция синхронизации для коллекции Backbone или для отдельной модели.
Поэтому вы можете сделать это:
var MyModel = Backbone.Model.extend({
// New instances of this model will have a 'dud' sync function
sync: function () { return false; }
});
var MyView = Backbone.View.extend({
...
events : {
'click #my-button' : 'enableSync',
'click #my-save-button' : 'saveModel'
},
enableSync: function () {
// If this view model is still pointing to our fake sync function,
// update it so that it references Backbone.sync going forward.
if (this.model.sync !== Backbone.sync) {
this.model.sync = Backbone.sync;
}
},
saveModel: function () {
// This won't actually do anything until we click '#my-button'
this.model.save();
}
...
});
var view = new MyView({ model: new MyModel() });