我创建了一个面板:
oMainView = Ext.create('My.panel.view');
我将oMainView
存储到对象中,以便稍后再次添加此面板!
然后我通过oMainView
将<{1}}添加到我的DOM:
add()
之后,我们的框架会在最小化时删除所有这些Div。没有页面刷新。因此,在最大化时,我想以相同的方式添加// Div to put it in
var oWindowDiv = Ext.get( strStartDiv );
// Container to hold it
var oContainer = Ext.create( 'Ext.container.Container', {
id : 'findMe',
layout : 'fit',
renderTo : oWindowDiv,
autoRender: true
});
oContainer.add(oMainView);
,我已经存储了它。
这在FF和Chrome中完美运行。但Internet Explorer(7,8,9)无法呈现面板。它只呈现空的HTML元素。
有什么问题?
PS。我不想重新创建面板!只需再次添加到容器中。
编辑:问题必须与创建的面板对象有关。因为添加新的测试面板有效:
oMainView
但添加此存储的面板不起作用,也没有错误。 Div只是空着。
答案 0 :(得分:1)
这不是ExtJS组件应该如何工作/使用的方式。并注意到渲染&amp;布局是组件创建的重要组成部分,需要在每种情况下完成。我建议隐藏未使用的组件,如果你真的不想破坏它们。您可以使用卡片布局轻松存档。
但回到你的问题;该组件将存储私有参数,表明它是否已经被渲染,有时可能会导致问题。您还应该使用remove()从拥有者容器调用autoDestroy: false
设置,从DOM中删除子组件(希望重置它的内部参数)。
还要检查您没有重复的ID!
顺便使用renderTo: oWindowDiv
和autoRender: true
这样做没有意义。在你的情况下,第二个配置什么都不做,因为你已经有一个渲染目标,容器被渲染到其中。
答案 1 :(得分:0)
经过几天的努力终于解决了问题:
在Ext容器从DOM中删除之前,我需要调用.removeAll(false);
。