2010-06-26 96 views
3

我試圖瞭解Reactive JS。在JQuery中,我可以觸發自定義事件爲在Rx JS中觸發自定義事件

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

並傳遞數據(即「測試」)。目前還不清楚如何在RxJS中做到這一點。我可以嘗試將jquery事件轉換爲

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

但是observable返回事件對象而不是我的數據對象。如何使用RxJS觸發包含數據的自定義事件?我是否總是需要搭載其他事件類型?我的目標是使用RxJS創建一個簡單的事件總線。

回答

0

您應該使用Rx.Observable.FromJQueryEvent從jQuery對象中獲取可觀察值,而不是普通的.ToObservable。

此鏈接將幫助您:jQuery + RxJS

7

即使這樣你的問題是有點老了,並且已經回答了,我想與大家分享我的看法。

您提到您希望將自定義事件設置爲Observables。對於自定義事件,當你真正想要的不是一個事件,而是一個Observable時,根本不需要使用jQuery。我喜歡將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你會發現,任何事件實際上可能是可觀察的。事實上,在F#中,IEvent派生自IObservable。

此外,您可以在刪除jQuery部件時減少與不同框架的綁定。

相關問題