0

非常に一般的で基本的なバックボーンの質問だと思いますが、答えが見つかりませんでした

サーバーからの最初のフェッチを除いて、各変更後にモデルを保存したいと思います。

例えば:

  MyModel = Backbone.Model.extend({
    url: "myModelUrl",
    initialize: function () {
      this.on("change", this.save, this);
    }
  });

取得すると、データがあるため、変更イベントを取得し、保存が再度トリガーされます

 var myModel = new MyModel({id:"123"}); 
 myModel.fetch(); 

最初のフェッチで最初の保存を回避する方法はありますか? (例: モデルが取得されたばかりの場合は、保存しないでください)

モデルをbootrtapするしか方法がないのでしょうか?

たとえば、ドキュメントに基づいて、これが本当に唯一の方法ですか?

ページの読み込み時にコレクションを生成するために fetch を使用しないでください。読み込み時に必要なすべてのモデルは、あらかじめブートストラップされている必要があります。fetch は、すぐには必要とされないインターフェイスのモデルを遅延読み込みすることを目的としています。たとえば、開いたり閉じたりできるメモのコレクションを含むドキュメントなどです。

編集:

ブートストラップで見られる問題の 1 つは、これです。ページの読み込み時にコレクション全体をフェッチする必要があるようです。コレクションの小さな部分だけをフェッチすることはできません。なんで?ルートがハッシュタグを使用している場合、ページの更新時に、サーバー側は現在のルートを認識できないためです (ハッシュ部分はサーバーに送信されません)。たとえば、pushState: true を使用する場合のみ、ページの更新時に適切なモデル/コレクションをブートストラップできるようになります。何か不足していますか?

4

2 に答える 2

0

あなたの要件をよく理解していません。ただし、最初の保存を避けたい場合は、属性を手動で設定できます

isFirstSave = true

このようなバインディングメソッドを作成します

onModelChange: =>
  if @isFirstSave
    @isFirstSave = false
  else
    @save()

醜いが動作する..

于 2013-04-05T17:40:14.477 に答える