3

Reactive JSを理解しようとしています。JQueryでは、カスタムイベントを次のようにトリガーできます

$(document).bind('eventbus', function(e, d) { console.log(d);});
$(document).trigger('eventbus', 'test');

データを渡します(つまり、「テスト」)。RxJS でこれを行う方法は明確ではありません。jqueryイベントを次のように変換しようとすることができます

var observable = $(document).ToObservable('eventbus');

しかし、observable はイベント オブジェクトを返しますが、データ オブジェクトは返しません。RxJS を使用してデータでカスタム イベントをトリガーするにはどうすればよいですか? 常に他の種類のイベントに便乗する必要がありますか? 私の目標は、RxJS を使用して単純なイベントバスを作成することです。

4

2 に答える 2

7

それでも、あなたの質問は少し古く、すでに回答されています。私の意見をあなたと共有したいと思います。

カスタム イベントを Observables として使用したいとおっしゃいました。カスタム イベントの場合、本当に必要なものがイベントではなく Observable である場合、jQuery を使用する必要はまったくありません。Observable をステロイドのイベントと考えるのが好きです。したがって、Observable を公開したいコンポーネントでは、RxJS を間接的にではなく直接使用してみませんか?

function Component(){
    var self = {};
    var subject = new Rx.Subject();

    //raise notifications this way
    //subject.OnNext("myData"); //could be anything, a string, an object, whatever

    self.getObservableSomething = function(){
        return subject.AsObservable();
    }
    return self;
}

Rx を使い始めると、どのイベントも実際に Observable になる可能性があることに気付くでしょう。実際、たとえば F# では、IEvent は IObservable から派生します。

さらに、jQuery の部分を削除すると、さまざまなフレームワークへの結び付きが減ります。

于 2011-04-25T20:56:58.827 に答える
0

プレーンな .ToObservable の代わりに、Rx.Observable.FromJQueryEvent を使用して jQuery オブジェクトからオブザーバブルを取得する必要があります。

このリンクが役に立ちます: jQuery + RxJS

于 2010-10-18T02:27:21.663 に答える