Javascript extjs表单在第二次选中时不会在面板中呈现

Javascript extjs表单在第二次选中时不会在面板中呈现,javascript,layout,extjs,Javascript,Layout,Extjs,我有一个基本布局,可以使用树状视图选择不同的组件,然后在主面板中进行渲染。这对我的所有组件(如网格)都很好,但对窗体有问题 第一次选择窗体时,它是正常的,只要再次尝试选择它,就不会渲染任何内容 这里有演示,页面顶部有一个指向javascript的链接 组件的选择发生在selectNode函数中,我已经尝试了我所能做的一切,但没有多少结果 编辑正如Jim Barrows指出的那样,最好在create函数中实例化一个组件。我一直在犹豫是否要这么做,因为这是我真正的应用程序中一个相当大的变化,我想保

我有一个基本布局,可以使用树状视图选择不同的组件,然后在主面板中进行渲染。这对我的所有组件(如网格)都很好,但对窗体有问题

第一次选择窗体时,它是正常的,只要再次尝试选择它,就不会渲染任何内容

这里有演示,页面顶部有一个指向javascript的链接

组件的选择发生在selectNode函数中,我已经尝试了我所能做的一切,但没有多少结果

编辑正如Jim Barrows指出的那样,最好在create函数中实例化一个组件。我一直在犹豫是否要这么做,因为这是我真正的应用程序中一个相当大的变化,我想保留实例,以便在它们之间导航

现在我已经写了这篇文章,我意识到要正确地执行状态,我必须将它存储在服务器上,不管浏览器是否导航到另一个页面

编辑我做了更改,总是像这样实例化表单,现在更加extJSy:):

你的问题是:

var selectNode = function(node) {

    node.select();
    node = node.attributes;
    var newpanel = components[node.component].create();
    var cp = Ext.ComponentMgr.get('center_panel');
    cp.setTitle(node.text, node.icon);

    newpanel.hideMode = 'visibility';
    newpanel.hide();
    cp.removeAll();
    cp.add(newpanel);
    cp.doLayout();
    newpanel.show();
};
在这里:

create: function() { return this; } 

cp.removeAll()
实际上会销毁所有组件。因此,当调用create时,不会返回this,因此不会显示任何内容。视口组件会自动销毁删除的任何内容,而面板将继承此功能。您可以将autoDestory设置为false,也可以在create中执行新操作。

这不完全正确,但离解决方案更近了一步
return此
始终返回有效的对象,但其状态不知怎么搞砸了。如果我将autoDestroy设置为false,我仍然会遇到问题,它只是不是没有出现任何形式,而是第一次呈现的最后一种形式。
create: function() { return this; }