10

バックボーンコレクションモデル(要素としてサブモデルを含む)とそれを編集するためのビューがあります。

モデルが最初に作成されたときに同期を「オフ」にして、ユーザーがボタンをクリックするまでバックエンドが呼び出されないようにしたいので、同期を「オン」にして保存を呼び出します。ルートモデルのメソッド。DBに保存します。保存したモデルは、通常のモデルのように動作するはずです。

目標は、ユーザーが入力内容に満足していると判断するまで保存を回避することです。

4

1 に答える 1

17

syncバックボーンは、に進む前に、最初にモデルのローカル関数を探しますBackbone.sync

Backbone.jsドキュメント:同期関数は、Backboneコレクションまたは個々のモデルに同期関数を追加することにより、Backbone.syncとしてグローバルにオーバーライドすることも、よりきめ細かいレベルでオーバーライドすることもできます。

したがって、これを行うことができます:

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's 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() });
于 2012-05-14T18:32:20.603 に答える