17

NoteCollectionView で新しい Note を NoteCollection に追加するコードがいくつかあります。これは、NoteCollectionView の関数 newNote によってトリガーされます。

newNote: function(data) {
    var note = new Note(data);
    this.collection.add(note);
},

私はまだバックボーンに非常に慣れていないため、これがサーバーと同期していることを確認したいと考えています。私が持っている懸念は次のとおりです。

1) このメモをコレクションに追加するだけで、サーバーから save() がトリガーされ、サーバーが提供する ID でモデルが更新されますか? または、

2) サーバーがモデルを更新せず、実際の ID が返されない場合、モデルを note.save() で保存し、サーバーから ID を取得するにはどうすればよいですか?

4

1 に答える 1

37

最初の質問に答えるには、いいえ、.addサーバーへの呼び出しをトリガーしません。コレクションにモデルを追加するだけです。

ただし、いくつかのオプションがあります。1 つは、新しい注記モデルを作成し、データベースに保存してから、コレクションに追加することです。

newNote: function(data) {
    var note = new Note(data);
    note.save();
    this.collection.add(note);
}

2 番目のオプションは、単純にBackbone の collection.create メソッドを使用することです。属性のハッシュを与えると、

  1. モデルを作成する
  2. データベースに保存する
  3. コレクションに追加

次のように、すべてが一挙に急降下します。

newNote: function(data) {
    return this.collection.create(data);
}

collection.create上記の return ステートメントで示されているように、新しく作成されたモデルも返します。

于 2012-07-11T18:16:41.413 に答える