1

createコレクションのモデルとなるフォームがあります。これaddにより、コレクションに対してイベントが発生します。私はそれをメソッドにバインドしています:

this.collection.bind('add', this.addOne, this)

火災...

addOne: function(tenant) {
   var self = this
   var collection = this.collection

   var view = new TenantView({model: tenant,collection:collection});
   self.$el.append(view.render().el);
}

createそれをデータベースに同期しますが、isNewコレクションをフェッチして新しいモデルの ID を取得していないため、新しく追加されたビューはバックボーンに残ります。

isNew私の質問は、コレクション全体をフェッチして追加せずに、同期されたモデル (id を持ち、そうでない) をサーバーから取得するにはどうすればよいですか?

4

1 に答える 1

4

sync代わりにイベントを使用してくださいadd...

this.collection.bind('sync', this.addOne, this);

を呼び出すと、すぐaddイベントが発生します。ただし、サーバーが create メソッドに応答すると起動されるため、正しいモデル id が含まれている必要がありますcreatesync

モデルをコレクションに追加する前に、サーバーの応答を待つこともできます。そのためには、の options hash: を使用wait: trueします。createcollection.create({ ... }, { wait: true })

モデルを作成すると、サーバーでモデルが正常に作成されると、コレクションで即時の「追加」イベントと「同期」イベントがトリガーされます。新しいモデルをコレクションに追加する前にサーバーを待ちたい場合は、 {wait: true} を渡します。

于 2012-11-28T07:18:28.460 に答える