Cher tous, J'utilise dojo.declare pour créer des classes en JavaScript. Dans l'une des méthodes, j'ai une requête AJAX. Dans la méthode de chargement de cette requête, j'ai besoin d'exécuter certaines méthodes. Ces méthodes sont en fait des méthodes de la classe qui a été créée en utilisant dojo.declare. J'ai essayé d'exécuter la méthode en utilisant this
. Mais cela m'a donné une méthode non trouvée erreur. J'ai donc utilisé dojo.hitch(this,testMethod)
pour l'invoquer. Cela a bien fonctionné. Maintenant, le problème est que j'ai beaucoup d'autres méthodes à l'intérieur testMethod()
qui appelle en interne d'autres méthodes de ma classe JavaScript. C'est vraiment pénible d'avoir dojo.hitch() partout. Y a-t-il du travail pour ça?Appel de la méthode JavaScript dans une portée particulière
dojo.declare("TestClass",null,{
getData:function(url){
dojo.xhrGet({
url:url,
load: function (response){
dojo.hitch(scope of the current object,testMethod(response))
},
error:function(){
}
});
},
testMethod:function(response){
//calls testMethod2. I think I can use dojo.hitch(this,testMethod3) to call it.
//but I wanted to avoid doing it every time.
},
testMethod2:function(){
//calls testMethod3
},
testMethod3:function(){
//can call other methods.
}
});
Salut Ander, Merci pour la réponse. J'ai une question. Dans la méthode load, "this" fait référence à l'objet window. Mais il n'y a pas de testMethod pour l'objet window. Pourriez-vous s'il vous plaît expliquer la raison pour laquelle cela devrait fonctionner? – Steves
Pourquoi pensez-vous que "ceci" fait référence à l'objet fenêtre? Il doit faire référence à l'instance de la classe "TestClass". – Andrei
dojo.xhrGet() est exécuté dans une étendue de fenêtre. Je l'ai également vérifié dans Firebug, en y définissant un point d'arrêt. – Steves