reconfigure方法主要支持用户根据返回结果的不同,生成动态变化的表头。这个重配置方法主要有两个参数,具体使用方法如下图API所示:
在这个方法里,我们可以根据需要重新配置grid的store和columns,使用起来比较简单。不过今天我们要分享的是我在实际开发过程中所遇到的一个问题。当时我们需要开发一个页面,其中初始页面中的grid和弹出窗口中的grid都需要使用到动态表头,但是奇怪的是,初始化页面中的grid能够很便利的调用reconfigure方法完成动态表头的设置,可是在弹出窗口中的grid的动态表头却死活也出不来,弹出窗口中的动态表头设置代码如下图所示:
程序在grid调用reconfigure方法时报错,但是通过断点调试的方式发现,这里grid、store和columns等对象均有正确的取值,但是这个莫名其妙的报错信息就是一直存在,如下图所示:
在用ExtJS进行前端开发时,比较郁闷的就是看到我们的报错信息指向了我们十分不熟悉的地带,例如ext-all.js里头。无奈,只能不断地尝试我们可能出错的地方,看是我们弹窗中的grid定义有误,还是我们调用方法的时机有误。最后,通过多次的模拟和尝试发现,在弹窗window中调用grid的reconfigure方法并且这个grid存在于弹窗中的时候,必须先show出这个窗口,才能成功调用。修正后的代码如下图所示:
只是将show出window的这句代码换了一个位置,放在了grid调用reconfigure方法之前即可解决上图所示的报错问题。在ExtJS中,方法和事件的调用有它内部实现顺序的规范和机制,这一点,需要经验和不断学习去慢慢领悟。很多时候,解决问题的最终方法都很简单,复杂的是解决问题的分析过程。也只有经历了过程这一阶段,才能有所成长和感悟吧。
PS:作者编程能力有限,若有不妥之处,欢迎留言探讨。