0

Backbone View を使用していくつかのウィジェットをレンダリングしていますが、それらはスタンドアロン要素としてレンダリングされた後に DOM に挿入されます。一部のプラグイン/ウィジェットは、要素がまだ「空中」にあるときに機能しますが、他のプラグイン/ウィジェットは、要素が正しく機能するために DOM の一部である必要があります。たとえば、バックボーン ビューの render メソッドでは、次を呼び出す必要があります。

$("#images").slimScroll(); //slimScroll is a jquery plugin that add custom scrollbar 

しかし、これはうまくいきません。Backbone View 要素が DOM にある場合にのみ機能します。現在の回避策は、ウィジェットを DOM に挿入した後にプラグイン メソッドを呼び出すことですが、これは非常に柔軟性がありません。そのため、要素が DOM でレンダリングされるときにイベントが必要です。これは document.ready のようなものですが、要素がドキュメントで準備ができたときにトリガーされます。そのようなイベントはありますか?または、そのような状況に対処する最善の方法は何ですか?

4

3 に答える 3

1

Ajax に関して、本質的に DOM の更新を引き起こすものは何もありません。

Ajax の結果として DOM の更新がある場合、それはイベント ハンドラー関数が DOM を変更したためです。

そのイベント ハンドラーの DOM 変更コードの後に​​コードを配置するだけです。

とはいえ、サポートされているブラウザではミューテーション オブザーバーを使用して DOM への変更を監視できます。

于 2013-09-09T08:51:03.057 に答える
1

ビューの範囲内で要素を見つける必要があります。このような:

this.$("#images").slimScroll();

しかし、プラグインでは幅、高さ、オフセットなどを計算するためにDOMに要素を追加する必要があるため、機能しないと思います.

于 2013-09-09T08:52:16.677 に答える
0

リクエストが行われajaxStartたときに発生する which を使用できます。Ajax

于 2013-09-09T08:52:21.813 に答える