1

1ページのWebアプリケーションを構築しています。ネストされたBackbone.Viewを動的に構築する必要があります。

通常、私は空のjQueryを作成し、それにdivを追加し、イベントバインディングを終了してから、そのjQueryオブジェクトを返します。

object.html()を追加するのではなく、jQueryオブジェクトを追加すると、そのオブジェクトにバインドされたイベントが保持されることに気付きました。

そのjQueryオブジェクトのこのイベント/コールバックはどこに保存され、jQueryオブジェクトを挿入したときにこのコールバックはどのようにDOMツリーに運ばれるのか混乱しています。

さらに、DOM操作後にコールバックを再バインドする必要がある条件を知りたいです。

ありがとうございました。

4

2 に答える 2

0

バックボーンイベントオブジェクトは、基本的にイベントバインディングを行うための省略形です。利用できませんか?これは、はるかに標準的なアプローチです。あなたのアプローチは非標準であり、混乱を引き起こす可能性があります。動的な状態を維持する必要がある場合は、BackboneWebサイトで説明されている規則を使用してイベントを添付できます。

DOMを削除するか、追加し直す場合は、イベントを再バインドする必要があります。ビューの動作によっては、モデルの変更によってビューの更新がトリガーされた場合に、イベントを再バインドする必要がある場合があります。ただし、バックボーンイベントハッシュがそれを処理します。

jQueryは実際にイベントをDOMノードにアタッチしたままにしました.data('events')、1.8ではなくなります(まだアクセスできますが、デバッグ以外の目的で使用することは想定されていません)。通常、DOMのイベントを検査することはできません。これにより、デバッグが非常に困難になります。jQueryを使用してイベントをアタッチすると、縮小されていないjQueryを使用して、イベントをディスパッチする場所にブレークを設定できるため、デバッグが容易になります。Chromeは、イベントの問題のデバッグにも適しています。しかし、理想的には、それらを手に入れる前にそれらを防ぎたいのです。より多くのツールが出てくることを望んでいます(たとえば、テスト中のイベントを監視およびデバッグできるPhantomJSへのイベントプラグインなど)。

于 2013-02-21T02:14:44.050 に答える
0

実装の詳細として、にバインドされたイベント$('some-selector')はに格納され
$('some-selector').data('events')ます。

jQueryユーザーとして、それについて心配する必要があるわけではありません。

于 2013-02-21T01:25:56.967 に答える