Chinaunix首页 | 论坛 | 博客
  • 博客访问: 139738
  • 博文数量: 40
  • 博客积分: 1935
  • 博客等级: 上尉
  • 技术积分: 430
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-11 08:14
文章分类

全部博文(40)

文章存档

2011年(2)

2009年(11)

2008年(27)

我的朋友

分类: 系统运维

2009-05-27 22:18:52

今天在使用Ext.Panel时,发现的问题。开始准备使用html在Panel控件中插入一些html片断,然后在render事件时,取出html中的dom对象,进行下一步的操作,结果,提示有个obj为NULL。

通过分析发现,Ext.Panel的渲染顺利是这样子的。只是一个粗略,没有更细致的分析。


Ext.onReady(function() {
    var x = new Ext.Panel({
        title:"test",
        renderTo: 'p',
        width: 100,
        html: "Config中的HTML", //1
        listeners: {
            render: function() {
                this.body.update("Render事件中的HTML"); //2

            },
            resize: function() {
                this.body.update("Resize中更新的HTML"); //3

            }
        }
    });
});

在Ext.Panel激发render事件时,html的代码并没有被渲染到body中。所以在render过程中不应该对html片断中的对象进行操作。如果要向Panel中加入HTML片断,然后操作对象,可以在render中,先用this.body.update(html);插入HTML片断,然后再做想要做的工作。
resize事件是在render事件之后发生的,如果我把config中的html注释掉,最后看到的Panel中的内容是“Resize中更新的HTML”。如果再把3也注释掉,才会可以render中更新的HTML片断。这样看来,Panel最先激发render事件,然后再调用resize,等整个组件都创建结束,才会将this.body的内容渲染为config.html。

在ext-all-debug.js中也可以看到,afterRender事件。显示这是在render事件之后再调用的,所以如果你要在render做一些处理的话,config.html是不可以设置的,否则会将render中的工作都毁掉。

// private

    afterRender : function(){
        if(this.fromMarkup && this.height === undefined && !this.autoHeight){
            this.height = this.el.getHeight();
        }
        if(this.floating && !this.hidden && !this.initHidden){
            this.el.show();
        }
        if(this.title){
            this.setTitle(this.title);
        }
        this.setAutoScroll();
        if(this.html){//设置html
            this.body.update(typeof this.html == 'object' ?
                             Ext.DomHelper.markup(this.html) :
                             this.html);
            delete this.html;
        }

阅读(11318) | 评论(3) | 转发(1) |
给主人留下些什么吧!~~

chinaunix网友2010-09-27 19:53:16

所以如果你要在render做一些处理的话,config.html是不可以设置的,否则会将render中的工作都毁掉。 是吗??再考虑再发表。 问题很简单render->insert html->resize。

chinaunix网友2010-07-29 16:52:33

chinaunix网友2010-03-31 17:58:47

不错,在此学过。谢谢!!!