既然用到了xmlhttp,一个常见的问题就是回调函数的scope/context。在prototype、mootools里我们常用Function.bind,在dojo中,做相同事情的东西叫做dojo.hitch。
| var handler = { name:'Mark', execute1: function(){ dojo.xhrGet({ url: "http://localhost/hello/sayHello.jsp", handleAs: "text", error: function(text) { console.dir(this); alert(this.name);//输出undefined,这里的this表示当前io参数 } //... }); }, load: function(text){ alert(this.name); }, execute2: function(){ dojo.xhrGet({ url: "http://localhost/hello/sayHello.jsp", handleAs: "text", error: dojo.hitch(this,"load") //输出Mark //error: dojo.hitch(this,this.load); //与上一句相同,知道为什么要用方法名字而不是引用了吧?省去了长长的一串this.xxx //... }); } } |
OK,基本的东西解决了,还有很多常用的函数没有介绍,比如:dojo.query,dojo.forEach,dojo.marginBox,dojo.contentBox等等。这个就没事翻翻dojo.js.uncompressed.js源代码,dojo的文档是没啥好指望的了。
本文详细介绍了在Dojo框架中利用XMLHttpRequest进行网络请求时,如何正确处理回调函数的scope/context问题,通过实例演示了Function.bind与dojo.hitch的运用,并探讨了Dojo框架中其他常用函数如dojo.query、dojo.forEach等的使用方法。文章旨在为开发者提供一种高效、灵活的网络请求解决方案,同时强调了阅读源代码和理解文档的重要性。
106

被折叠的 条评论
为什么被折叠?



