在学Ext,以前学JQuery感觉没那么多疑问,可能Ext太复杂吧。
在JQuery里面更改一个元素中的内容很简单,只要元素.html("内容")即可,但是Ext怎么就不行看下代码
Ext.onReady(function(){
    var nav = new Ext.Panel({
        title       : '导航',
        region      : 'west',
        width       : 200,
        collapsible : true,
        html : '<p>改动之前的内容</p>',
        margins     : '3 3 3 0',
        cmargins    : '3 3 3 3'
    });     var main = new Ext.Panel({
     region : 'center',
        margins     : '3 0 3 0',
        html : 'Hello World',
        cmargins    : '3 3 3 3'
    });
    
    var win = new Ext.Window({
        title     : '窗口标题,
        closable  : false,
        draggable : false, //禁止拖动
        resizable : false,
        modal     : true,
        width     : document.body.clientWidth - 8,
        height    : document.body.clientHeight - 18,
        plain     : true,
        layout    : 'border',
        items     : [nav, main]
    });    win.show();
    
    nav.html='<p>后来改动的内容</p>';
    
});这段代码是想建一个左右分隔开的界面,左边是导航,其panel的名字叫做nav,再后来改动了他的内容,但并未生效,nav里面显示的还是“改动之前的内容”为什么?

解决方案 »

  1.   

    已经找到答案。原因是任何元素一旦被布局管理器管理,就不能修改其大小、位置和内容。
    在执行show()之后,布局管理器就开始控制着元素,就不能通过el.html属性来修改其内容,能够使用的方法:
    1,设置el.body.dom.innerHTML属性
      像没有ext、jquery库之前那样在el.body.dom中添加节点什么的……
    2,el.load()类似Ajax的效果
    3,el.getUpdater().update()类似Ajax的效果
    4,这两个类知识听说有用,但还没弄懂怎么用
      BorderLayout.Region
      BorderLayout.SplitRegion40分又白费了。明天12点之前结贴。
      

  2.   

    EXT里面  很多控件,比如window,panel
    改动之后都要从新绘制一下控件,做到修改!
    比如nav.doLayout()
      

  3.   

    nav.html='<p>后来改动的内容</p>';
    nav.render();
    要重新渲染下nav这个panel,不重新渲染是没有效果的