5

ヘッダーにフィルターメニューがあるメインアプリビューがあります。クリックすると、別のニュースフィードビューでコンテンツをフィルタリングしたいと思います。しかし、あるビューのクリックから別のビューの関数にイベントをバインドする(そしてクラスデータを渡す)方法がわかりません。

どうすればこれを達成できますか?

4

2 に答える 2

16

これを実現する方法はいくつかありますが、おそらく、2 つのビュー間で共有されるモデル オブジェクトを作成する必要があります。次に、ビュー 1 の「クリック」でモデル オブジェクトを更新し、ビュー 2 の「変更時」をモデル オブジェクトにバインドします。

基本的に、両方のビューをモデル オブジェクトと同期するように設定できます。オブジェクトを変更すると、ビューも変更されます。

于 2011-08-03T18:19:17.867 に答える
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 を参照することに注意してください。詳細については、バックボーンのドキュメントを参照してください。

于 2011-08-03T18:47:28.990 に答える