2012-03-07 6 views
1

バックボーンビューがあり、定期的にelのコンテンツを置き換えているとします。新しい調整されたelコンテンツで非イベントアクションを再実行するにはどうすればよいですか?例えば;コンテンツを置き換え、すべてのリンクにライトボックススクリプトを使用させたいとします。スクリプトを通常どおりにアタッチするには、レンダリングで次のようにします。バックボーンビューのEl変化を監視していますか?

this.$el.find('a').box() 

ただし、コンテンツを置き換えた後、再度実行する必要があります。 elコンテンツがいつ置き換えられるのか必ずしもわからないことを考えれば、どのように再実行しますか?私はそのために委任できるイベントを見つけることができないようです - 準備ができて、ロードして、働くことができるようにすべてのサウンドを変更してください。理想的には、イベントハッシュに入れて、各置換の後にそれらのものを実行するメソッドを呼び出すことができます。

+0

置き換えを行うコードは常に同じ場所から来ていますか? – Eli

+0

コンテンツを置き換えることができるいくつかの異なるコンポーネントがありますので、使用するプラグインを再実行するように、ある種の「変更」イベントを引き起こす十分に切り離されたトリガー方法を理解する必要があります。 –

+0

コンテンツ自体がビューであるか、ビューの一部ですか? – Eli

答えて

1

あなたの初期化でこれを行うことができます。

$(this.el).livequery(function() { 
    // perform selector on $(this) to apply box 
}); 

あなたはイベントアグリゲータを使用することができ臆面もなく盗まれたとわずかjquery live event for added dom elements

+0

Eww ...私はこれのために第三者図書館全体を入れたくありません。今のところ私はコンテンツの変更が行われた場所のどこでもコンテナの変更イベントを手動で起動しています。ハッキーの種類ですが、少なくともイベント定義を標準で保持しており、サードパーティのライブラリに依存する必要はありません。特に、2年以内に更新されていないことを考慮してください。 –

+0

プラスそれはlivequeryに基づいています。これはjQuery 'live'のようなものですが、その悪用のために非推奨になります。 – Eli

+0

OK十分です。私はあなたのバックボーンビューがモデルに基づいていない場合(私は変更イベントが働いていないと仮定していました)、バックボーンビューから抜け出すことはあまりありません。それは本当に唯一の詐欺です(http://documentcloud.github.com/backbone/#Viewの最初の段落を参照) – timDunham

0

から変更。アグリゲータで、コンテンツを変更するたびに実行される関数にバインドされたイベントを作成します。 elコンテンツを置き換えるたびに、作成したイベントをトリガーします。 Event Aggregator

関連する問題