×
Creating solutions

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
No part of this article may be reproduced without mention of the author and URL to this website.
For more information, see the About section.

Comments

Article has no comments.

Add a comment

Name (required)
Website
Message (required)
Submit
From latest