是用extjs做一些后台功能,其中希望一表单方式展现一下用户信息。
用户信息是从后台读取的,查了一下可以用form.load()自动填充表单内容。
但是发现,第一次加载的时候总是无法填充数据。而且firebug显示一个错误:this.form.el is undefined
网上搞了半天,没找到解决方式。
自己分析了半天,只能说是越分析越糊涂。最后google、百度均是找不到方法。于是只能,点开google给的这个英文网址
http://www.sencha.com/forum/showthread.php?93617-getForm%28%29.load%28%29-and-quot-this.form.el-is-undefined-quot
这个网址进去了好几遍,本人看到英语就头疼,所以几次错过。但是最后不得不用蹩脚的英语往下看,最后发现了这个解决方法
you can use the listeners-config of formPanel.
listeners : { render : function(){ // form.load(); } }
至于愿意,本人在这里YY一下。
按照代码,应在formpanel初始化之后,进行load方法,然后动态刷新,自动更新表单。
我的formpanle 是一个方法创建的,只有事件触发的时候才会执行。
但是当打开网页的时候,居然出现了this.form.el is undefined 而且,错误就在 load方法之处。
所以我的猜测是,这个load方法被提前执行了。
而且,当我第二次触发事件的时候,一切都能正常。就表明,load方法可能过早执行,但是这个时候formpanel没有初始化,所以报了这个错误。
而上面给的解决方法,是放到监听里面,这样就避免了上面问题。
这篇文章
http://www.myext.cn/webkf/46836.html
中说到:“百度一下,基本上都是讲到,在使用form.load方法,极容易出现该错误。因为该方法使用表单控件的id进行数据处理。容易发生id冲突,需要修改ext-all文件,改为通过name进行数据处理”。
这个貌似作者最后也没搞定,采用了别的方式。