2012-04-14 13 views
1

In meiner Anwendung habe ich ein paar verschiedene Widgets. Wenn jemand eine Veränderung vornimmt, müssen sich auch die anderen ändern. Ich möchte sie entkoppelt halten. Ich habe nicht zu viel JavaScript-Programmierung gemacht, also bin ich mir nicht sicher, was die typischen Möglichkeiten sind, dies zu tun.Javascript registrieren Ereignis Listener

Gibt es Warteschlangenmechanismen in jquery, so dass ich ein Ereignis mit der Nachricht "prop X geänderter Wert Y" posten kann und jeder, der in dieser Warteschlange registriert ist, benachrichtigt werden kann? Oder ist das keine typische Art, Ereignisse in Javascript zu verarbeiten?

Antwort

3

In jquery ist es einfach und Sie nutzen die gleichen Mechanismen wie für Standard-Events.

//register listener for "widget" 
$("div#firstWidget").bind("myCustomEvent", function(e){ 
    alert(e.customFlag); 
}); 

//somewhere else trigger event on widget 
var e = $.Event("myCustomEvent"); 
e.customFlag = "customValue"; 
$("div#firstWidget").trigger(e); 

Sie könnten auch ein globales Ereignis Bus zu schaffen emtpy jquery Objekt zur Verfügung stellen zu halten und Versand Ereignisse

window.myEventBus = $([]); 

//register listener 
myEventBus.bind("customEvent", function(e){ 
    //handle event 
}); 

//fire event 
myEventBus.trigger($.Event("customEvent", { numProp:5, boolProp:true }));