现在的位置: 首页 > 综合 > 正文

extjs form.load() this.form.el is undefined 解决方法

2013年08月25日 ⁄ 综合 ⁄ 共 946字 ⁄ 字号 评论关闭

是用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();
    }
}

于是就给formpanel 增加了listeners 属性,把对应的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进行数据处理”。

这个貌似作者最后也没搞定,采用了别的方式。

抱歉!评论已关闭.