2010-06-26 3 views
3

J'essaie de comprendre Reactive JS. Dans JQuery, je peux déclencher des événements personnalisés sous la formeDéclencher un événement personnalisé dans Rx JS

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

et de transmettre des données (c'est-à-dire 'test'). Ce n'est pas clair comment faire cela dans RxJS. Je pourrais essayer de convertir les événements jquery comme

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

mais observable renvoie l'objet événement mais pas mon objet de données. Comment puis-je déclencher des événements personnalisés avec des données à l'aide de RxJS? Ai-je toujours besoin de me greffer sur un autre type d'événement? Mon but est de créer un simple eventbus en utilisant RxJS.

Répondre

0

Vous devez utiliser Rx.Observable.FromJQueryEvent pour obtenir un observable à partir d'un objet jQuery, au lieu du .ToObservable brut.

Ce lien vous aidera: jQuery + RxJS

7

Même si votre question est un peu vieux et déjà répondu que je voudrais partager mon opinion avec vous.

Vous avez mentionné que vous voulez que vos événements personnalisés soient observables. Pour les événements personnalisés, il n'est pas nécessaire d'utiliser jQuery quand ce que vous voulez vraiment avoir n'est pas un événement mais un observable. J'aime penser à un observable comme un événement sur les stéroïdes. Donc, dans votre composant que vous souhaitez exposer le Observable, pourquoi ne pas utiliser directement RxJS plutôt que de manière indirecte comme ceci:

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; 
} 

Une fois que vous avez commencé à l'aide de Rx vous remarquerez que tout événement pourrait effectivement être un Observable. En fait, dans F # par exemple, IEvent dérive de IObservable.

En outre, vous réduisez le lien avec différentes structures lorsque vous supprimez la pièce jQuery.

Questions connexes