1

私はBackboneJSを使用してかなり複雑なアプリケーションに取り組んでいます。イベントのパブリッシュ/サブスクライブに使用するGlobalsオブジェクトがあります。課題は、イベント駆動型アーキテクチャを使用して機能を分離する効率的な手段がないように思われることです。

Magentoのような総合馬術システムについてもっと考えています。ご覧のとおり、Magentoでは、を呼び出しdispatchEventてオブジェクトを渡します。Magentoの次の行(壊れている、つまり、そのイベントのすべてのサブスクライバーが最初に実行されるのを待っている)で、これらのオブジェクトに再度アクセスできます。この方法の良い点は、イベントをサブスクライブするすべての関数に、変更可能なオブジェクトが渡され、そのオブジェクトが返されることです。

したがって、サブスクライバーが実行を終了したら、この変更されたオブジェクトを取得して実行を終了できます。JSでは、それはコールバックになりますが、考え方は同じです。

だから私の質問:

  • このようにバックボーンに焼き付けられたものを知っていますか?
  • あなたが知っているプラ​​グインはありますか?

お時間をいただきありがとうございます!

4

1 に答える 1

2

独自のイベントを定義し、必要なパラメーターをイベントハンドラーに渡すことができます。たとえば、イベントを定義し、そのイベントをトリガーするときにオブジェクトを渡すことができます。

var M = Backbone.Model.extend({
    go: function() {
        var o = { };
        this.trigger('some:event', o);
        console.log(o);
    }
});

次に、リスナーは、引数として取得したオブジェクトに必要なものをすべて隠しておくことができます。

var m = new M;
m.on('some:event', function(o) {
    o.where_is = 'pancakes house?';
});
m.on('some:event', function(o) {
    o.ill_cook = 'you some eggs, Margie';
});
m.go();

それはあなたがで電話をかけ{where_is: 'pancakes house?', ill_cook: 'you some eggs, Margie'}oときにあなたを残します。console.loggo

デモ: http: //jsfiddle.net/ambiguous/4XCmc/

もちろん、標準のバックボーンイベントには、リスナー用に指定された独自の引数リストがありますが、必要なカスタムイベントを追加できます。

于 2012-02-07T22:56:11.717 に答える