0

「インデックス」ビューとそれに付随する「ページネーション」ビューがあります。初期化時に、インデックス ビューは関連するコレクションをフェッチします。最初にフェッチされたコレクションは 100 モデルに制限され、コレクション内のすべての値のカウントが含まれています。カウントはページネーション ビューに渡され、それに応じてページ番号が生成されます。10 ページ目以降 (10 レコード/ページ) 次の 100 モデルが取得され、パターンが続きます。

前述のことを念頭に置いて、1 つ以上のモデルをコレクションに追加すると、サーバーからモデル カウントを再取得する必要があります (ページを再計算できるようにするため)。

@collection.add [new_model]

ただし、モデルの値を変更する場合は、コレクションを再レンダリングするだけです。

次の初期化コードを使用すると、変更後にコレクションを再レンダリングできます。しかし、「追加」の場合は何も起こりません。サーバーから新しいコレクションとカウントを再フェッチするビューを作成するにはどうすればよいですか?

注:私は使用していますfetch(add: true)

initialize: ->
    @collection = new MyApp.MyCollection()
    @collection.on('add', @render, @)
    @collection.on('change', @render, @)
    @collection.fetch(add: true)
4

1 に答える 1

0

イベント ロジックを明確にするには:

  • reset : サーバーからのフェッチ後にトリガーされます。フェッチはコレクションのすべてのコンテンツを削除し、サーバーから取得したコレクションにすべてを挿入するだけです
  • add : モデルがコレクションに追加された後にトリガーされます。注意: add:True オプションを使用しない限り、add はフェッチによってトリガーされません。
  • change : モデルのコンテンツ/フィールドが変更された後にトリガーされます。注意: フェッチやモデルの追加によって変更がトリガーされることはありません。

そのため、イベントが重複することはほとんどありませんが、すべてが特定のユース ケースに役立ちます。イベントをメソッド、特に render メソッドにバインドするときは、このことを念頭に置いてください。

于 2012-08-22T16:12:30.027 に答える