0

に渡すときに変更されたモデルを取得する方法があるかどうか疑問に思っていadd: trueますfetch。コレクション内のすべての新しいモデルがレンダリングされますが、変更されたモデルがあるかどうかも知りたいです。

これは可能ですか?

また、成功ハンドラーとして別の関数をに渡す可能性についても検討しましたfetch。この関数は、ビュー全体ではなく、ビューの特定の部分のみを再レンダリングします。

4

3 に答える 3

2

通常のパターンは、モデルをレンダリングするビューを持つことです。次に:

  • add追加されたモデルのビューを追加するために、コレクションのビューでコレクションのイベントをサブスクライブします。
  • モデルのビューをモデルのビューにサブスクライブさせchangeて再レンダリングします。

それでもビューを1つだけにしたい場合は、次のaddようにします。-ビューに追加するために、コレクションのイベントをサブスクライブします。-コレクションのchangeイベントをサブスクライブし、ビューの一部を更新します。

于 2012-08-29T20:48:13.597 に答える
2

バージョン0.9.10では、{update:true}の代わりにを使用する必要があり{add:true}ます。changeこれにより、変更されたモデルごとにイベントをトリガーするようにコレクションに指示されます。(イベントはモデルではなくコレクションchangeでトリガーされることに注意してください)

コレクションでモデルを追加および更新したいが、モデルを削除したくない場合は、次のように実行できます。

myCollection.fetch({update:true, remove:false});

これがBackbone.jsドキュメントの関連セクションです。

于 2013-02-24T17:25:48.617 に答える
1

「add」イベントにバインドして、ビューの一部のみを更新するメソッドをトリガーできます。ビューを再レンダリングするには、コレクションイベントを明示的にバインドする必要があります。つまり、ビューのどの部分をレンダリングするかを制御します。コレクションの「変更」イベントに基づいて、表示するレンダリング先の関数を変更するだけではいけませんか?

各モデルには、メソッドisNew()とhasChanged()があります。コレクションをループして、変更されたモデルを確認できます。これを行うためのより簡単で熟練した方法があれば、私はすべての耳です。

たぶんあなたはあなたが何をしているかを正確に見ることができるようにいくつかのコードを投稿することができますか?

于 2012-08-29T19:20:47.553 に答える