1

アプリケーション内のすべてのゾンビを追跡し、イベントバインディングがどのように発生するかをよりよく理解しようとしています。"add"コレクションイベントをそのrender関数にバインドするビューがあります。

_.bindAll(this, "render");
this.collection.bind("add", this.render);

したがって、レンダリング関数に何かを記録すると、ユーザーがUIを介して新しいモデルを追加した直後に、レンダリングが2回行われたことがコンソールで確認できます。コンソール出力は次のようになります。

rendering                                  index.js?body=1 (line 88)

POST http://localhost:3000/tasks           jquery.js?body=1 (line 8103)

rendering                                  index.js?body=1 (line 88)

なぜこれが起こっているのだろうか。モデルがコレクションに1回だけ追加されたという事実を知っているので、イベントは1回だけ発生する必要があると思います。renderそれでは、なぜ2回処刑されたのかわかりません。ここで同様の質問を調べましたが、addの代わりにイベントを使用しているため、違いchangeます。

4

3 に答える 3

1

ビューを2回インスタンス化しましたか?2つの異なるビューである可能性があります。

于 2012-08-06T21:45:05.413 に答える
1

レンダーを2回呼び出していると思います。

Yoyは次のようなことをしています。

var yourView = new YourDefinedView();
yourView.render(); // this is your manual call to render

//here you call to the server and when data arrives is the second render
this.collection.fetch();

コレクションが新しいアイテムを受け取ったときにバインドするのにレンダリングが最適な方法だとは思いません。

コレクションからビューにアイテムを追加するために特定のイベントをバインドする方法の例を確認してください:http: //danielarandaochoa.com/backboneexamples/blog/2012/02/22/real-world-usage-of-a-backbone-collection //

于 2012-08-07T02:27:50.880 に答える
0

renderイベントアグリゲーターを介した追加のバインディングがあることが判明しました。別の開発者によって追加されました。

于 2012-08-15T14:55:37.967 に答える