0

Backbone.js モデル .on イベントがバインドされている関数を特定しようとしています。たとえば、次のビューがあるとします。

this.model.on('change', this.render, this);

モデルが変更されたときにレンダリング関数が呼び出されることをプログラムで決定できるようにしたいと考えています。

Backbone.js ソースを見てきましたが、バインディングは ._callbacks に保存されているようです。._callbacks では、モデルがバインドされているイベントを特定できます。上記の例から、モデルに変更イベントがバインドされていることがわかります。ただし、モデルがビューのレンダリング機能にバインドされていると判断することはできますか?

好奇心旺盛な人のために、私は現在取り組んでいるビューのレンダリング機能を拡張しようとしています。ただし、レンダリング関数を拡張/再割り当てすると、モデルのイベント バインディングが壊れます。

ありがとう!

4

1 に答える 1

1

これにはいくつかのアプローチがあります。あなたのものは機能するはずですが、ビューの通常のバインディングを手動で無効にして、独自のものを追加する必要があります。

function renderMore() {
    //do your pre-render code
    view.render()
    //do your post-render code
}
model.off('change', view.render);
model.on('change', renderMore);

ただし、これはカプセル化が不十分な非常にひどいコード臭です。ビューをサブクラス化し、サブクラスで適切なタイミングで親クラスのメソッドを呼び出すことを考えたことはありrenderますか?

ダイアログを、追加のルック アンド フィール要素のない純粋なウィンドウと、タイトル バーや閉じるボタンなどを備えた jquery モーダル ダイアログの両方としてレンダリングする機能が必要な状況に直面しました。レンダリングを担当する親クラスを作成しました。基本的なコンテンツと、jquery とバニラのバリエーションを処理するために追加できるミックスインがありました。

于 2012-09-18T14:55:20.257 に答える