1

バックボーンには、ユーザーのアクションに応じてイベントを変更するこのビューがあります。

したがって、3つのビューがあり、すべて初期化されています。

var view1 = new MainView({el : '#view1'});

var view2 = new ProductsView({el : '#prodcuts'});

var view3 = new StoresView({el : '#stores'});

今、私がやりたいのは、あるビューから別のビューにイベントをコピーしてから、ビューを更新することです。私はもう試した:

if($option == 'products') {
  view1.events = view2.events
  $("div[data-role='content']", view1.el).html(content);
} else {
    view1.events = view3.events
  $("div[data-role='content']", view1.el).html(content);
}

問題は、現在でもコンテンツが同じであり、イベントに対応する要素が存在するが、イベントが発生しなくなっていることです。これはなぜですか、どうすれば修正できますか?

4

1 に答える 1

3

デリゲートイベントメソッドを呼び出す必要があります。

たとえば、次のようなものです(提供したコードが与えられた場合)。

if($option == 'products') {
  view1.delegateEvents(view2.events)
  $("div[data-role='content']", view1.el).html(content);
} else {
    view1.delegateEvents(view3.events);
  $("div[data-role='content']", view1.el).html(content);
}

また、イベントを削除するには、undelegateEvents()メソッドを使用することに注意してください。

于 2012-11-16T16:12:03.630 に答える