ヘッダーにフィルターメニューがあるメインアプリビューがあります。クリックすると、別のニュースフィードビューでコンテンツをフィルタリングしたいと思います。しかし、あるビューのクリックから別のビューの関数にイベントをバインドする(そしてクラスデータを渡す)方法がわかりません。
どうすればこれを達成できますか?
ヘッダーにフィルターメニューがあるメインアプリビューがあります。クリックすると、別のニュースフィードビューでコンテンツをフィルタリングしたいと思います。しかし、あるビューのクリックから別のビューの関数にイベントをバインドする(そしてクラスデータを渡す)方法がわかりません。
どうすればこれを達成できますか?
これを実現する方法はいくつかありますが、おそらく、2 つのビュー間で共有されるモデル オブジェクトを作成する必要があります。次に、ビュー 1 の「クリック」でモデル オブジェクトを更新し、ビュー 2 の「変更時」をモデル オブジェクトにバインドします。
基本的に、両方のビューをモデル オブジェクトと同期するように設定できます。オブジェクトを変更すると、ビューも変更されます。
Backbone のすべては Backbone.Events から継承されるため、どこからでもイベントをトリガーおよびバインドできます ( Backbone.Events のドキュメント)。
var View1 = Backbone.View.extend();
var View2 = Backbone.View.extend({
eventHandler: function(data) {alert(data)}
});
var v1 = new View1;
var v2 = new View2;
v1.bind('hello-world-event', v2.eventHandler)
v1.trigger('hello-world-event', 'Hello World!')
この例では、v2.eventHandler が呼び出されると、「this」は v1 を参照することに注意してください。詳細については、バックボーンのドキュメントを参照してください。