Как отключить Backbone.sync для новой модели и повторно включить синхронизацию * после того, как пользователь нажимает кнопку сохранения

У меня есть модель коллекции Backbone (с подмоделими как элементы) и представления для его редактирования.

Мне бы хотелось, чтобы при первоначальной создании модели, чтобы "выключить", sync, поэтому задний конец никогда не вызывается, пока пользователь не нажмет на , то я хотел бы "включить" синхронизацию и вызвать сохранение метод на корневой модели, чтобы сохранить его в БД. После сохранения модели она должна вести себя как нормальная модель.

Цель состоит в том, чтобы избежать сохранения, пока пользователь не определит, что он доволен что он ввел.

Ответ 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() });