dojo.connect:Výkonný posluchač objektů a událostí

Jedna z částí sady nástrojů Dojo, která na mě opravdu udělala dojem, je dojo.connect. Tato metoda připojení nejen naslouchá událostem DOM, ale také vám umožňuje naslouchat, kdy se provádí běžná funkce. Pojďme se podívat, co je to dojo.connect a různé metody, kterými můžete dojo.connect používat v jakékoli aplikaci Dojo.

Podpis dojo.connect

dojo.connect = function(
	obj,		//Object|null
	event,		//String
	context,	//Object|null
	method,		//String|Function
	dontFix		//Boolean
) //.....

Podrobnější vysvětlení každého argumentu (jak převzato z dokumentace Dojo) :

  • obj: Zdrojový objekt pro funkci události. Výchozí dojo.global, pokud je null. Pokud je obj uzel DOM, je připojení delegováno na správce událostí DOM (pokud není dontFix pravda).
  • událost: Název funkce události v obj. Tj. identifikuje vlastnost obj[událost].
  • kontext: Objekt, který metoda obdrží jako "toto". Pokud je kontext null a metoda je funkce, pak metoda zdědí kontext události. Pokud je metoda řetězec, pak kontext musí být objekt zdrojového objektu pro metodu (context[metoda]). Pokud je kontext null, použije se dojo.global.
  • metoda: Odkaz na funkci nebo název funkce v kontextu. Funkce identifikovaná metodou se spustí po události. metoda přijímá stejné argumenty jako událost. Informace o rozsahu metody naleznete v komentářích k argumentům kontextu.
  • neopravujte :Pokud je obj uzel DOM, nastavte dontFix na hodnotu true, abyste zabránili delegování tohoto připojení na správce událostí DOM.

dojo.connect vrátí popisovač, který budete muset později odebrat. Všimněte si také, že jakékoli argumenty předané objektu (funkci) budou přijímány posluchačem! Sakra, to je užitečné!

Příklady použití:Zpracování událostí uzlu DOM

var eventHandle = dojo.connect(dojo.byId('myElement'), 'onclick', null, function() { //null = dojo.global
	alert('you clicked myElement');
});

//...or:

var eventHandle = dojo.connect(dojo.byId('myElement'), 'onclick', function() { //context isn't required
	alert('you clicked myElement');
});

Když kliknete na myElement, my messaged je upozorněno.

Příklady použití:Manipulace s objekty

var someFunction = function() {
	alert('run!');
};
var val = dojo.connect(null, 'someFunction', null, function() { //null = dojo.global
	alert('you ran someFunction!()');
});

Když je volána nějaká funkce, moje funkce posluchače upozorní na zprávu. Jak skvělé to je?!

Příklady použití:Zpracování událostí NodeList

dojo.query('.myElements').connect('onclick', function() { //"this" becomes the "current" element
	alert('you clicked this link');
});

Zpracování událostí funguje dokonce i na dojo.connect – nemusíte procházet jednotlivými prvky v kolekci, abyste mohli jednotlivě přidávat posluchače událostí.

Příklad použití:Odstranění události

var eventHandle = dojo.connect(dojo.byId('myElement'), 'onclick', function() { //context isn't required
	alert('you clicked myElement');
});

//....
//something happens; we want to remove the event listener
//....

dojo.disconnect(eventHandle);

Předáme rukojeť poskytnutou dojo.connect pro odpojení posluchače.

To je jen rychlá ochutnávka toho, co můžete dělat s dojo.connect. Nezapomeňte se podívat na Dojo a experimentovat s různými způsoby použití dojo.connect. Protože dojo.connect je jednou ze základních metod knihovny, dojo.connect se používá všude. dojo.connect také hraje důležitou roli v Dijit, pobočce UI Dojo.