20

バックボーンのイベントに関する簡単な質問-さまざまなビューで再利用できる一連のグローバルイベントを定義する方法はありますか?

たとえば、ページにレンダリングされるビューがいくつかあるとします。各ビューには、メニューを展開するボタンがあります。他にもいくつかの一般的な要素とイベントがあります。このイベントロジックを各ビューに配置せずに、これらの各ビューが継承したり、グローバルイベント定義からこれらのイベントをプルしたりする方法はありますか?これらの一般的なイベントを1つの場所で定義することにより、確かに時間を節約し、よりクリーンなソリューションになります。

イベントアグリゲーターやファクトリーパターンなどの用語が飛び交うのを見てきましたが、最善のアプローチ(またはそれらが私が求めているものを達成するかどうか)についてはわかりません。

4

1 に答える 1

52

基本的に、イベントアグリゲーターまたはディスパッチャーについて説明しています。Backboneでの構築と使用に関する記事がいくつかあります。

http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/

http://lostechies.com/derickbailey/2012/04/03/revisiting-the-backbone-event-aggregator-lessons-learned/

また、Backboneやその他のpub / subライブラリで同じことを行うための記事は、Web上にもっとたくさんあります。

バックボーンで行うのは非常に簡単です。


vent = _.extend({}, Backbone.Events);

これventで、アプリケーションのすべてのビューおよびその他のオブジェクト全体でイベントアグリゲーターとして使用できるオブジェクトができました。


vent.on("some:event", function(){
  console.log("some event was fired");
});

vent.trigger("some:event");
于 2012-04-06T12:12:55.020 に答える