×
Vytvárame riešenia

Ako posúvať scope v Dojo a jQuery

V tomto článku opíšem, ako posúvať scope, nazývaný aj context, do funkcií a metód, s ktorými chceme neskôr pracovať. Problémom je, že pri asynchrónnych spracovaniach je scope objekt window. Je viacero spôsobov ako tomuto javu zabrániť, niektoré som už uvádzal v minulých článkoch. Tentoraz sa zameriam na frameworky Dojo Toolkit a jQuery, ktoré túto funkcionalitu podporujú tiež.

JQuery

Vo frameworku jQuery slúži pre posúvanie scopu metóda proxy(). Tú je možné zapísať len pre posun scopu alebo aj aktuálnych argumentov (premenných), ktoré sa v čase menia, a tak pri vykonávaní metódy by už mali iné hodnoty. Rovnaký princíp platí aj pre Dojo.
Príklad: Formáty zápisu metódy proxy() v jQuery.
1
2
$.proxy(callback, context)
$.proxy(callback, context, args)
Príklad: Príklady použitia metódy proxy() v jQuery.
1
2
$("#button").on("click", $.proxy(this.showData, this));
$("#button").on("click", $.proxy(this.showData, this, "1", "2", "3"));
Okrem štandardného this je samozrejme možné posúvať aj iné objekty.
Príklad: Príklad volania metódy z objektu sender() pri zachovaní scopu sender.
1
$("#sendLoginButton").on("click", $.proxy(sender.login, sender));

Dojo Toolkit

Rovnaký princíp ako v jQuery platí aj v Dojo Toolkit. Jediný rozdiel okrem názvu metódy je opačné poradie prvých dvoch argumentov. Pre prácu s metódou hitch() je potrebné nahrať modul dojo/_base/lang.
Príklad: Formát zápisu metódy hitch().
1
2
lang.hitch(context, callback)
lang.hitch(context, callback, args)
Príklad: Príklady použitia metódy hitch() v Dojo Toolkit.
1
2
3
var button = dom.byId("sendLoginButton");
on(button, "click", lang.hitch(this, this.showData));
on(button, "click", lang.hitch(this, this.showData, "1", "2", "3"));

Záver

Verím, že vám tento článok pomohol a v prípade a ak máte iné zaujímavé riešenia, podeľte sa o ne prostredníctvom komentára.


Programovanie,Dojo,jQuery,dojo/_base/lang",hitch(),proxy(),scope,this,window
Žiadna časť tohto článku nesmie byť reprodukovaná bez uvedenia autora a URL na túto stránku.
Viac informácií nájdete v sekcii O projekte.

Komentáre

Článok neobsahuje zatiaľ žiadne komentáre.

Pridať komentár

Meno (povinné)
Web
Správa (povinné)
Odoslať
Od najnovších