javascript - ExtJS4 中的 div.appendChild(div) 等效项

标签 javascript extjs extjs4.1

我正在将代码转换到 ExtJs4.1.1。 在代码的一部分中,我使用了 Javascript 的 appendChild() 方法将新的 div 元素添加到现有 div 容器。

我希望现在在 ExtJs 中完成此操作。

现有代码:

var container = document.getElementById('treeContainer');
var nodeDiv = document.createElement("div");

// nodeDiv related code... setting properties and attributes
nodeDiv.innerHTML = "<div class='NodeContent'>" + node.displayText + "</div>";
nodeDiv.className = "Node";
//... more such code...

//add div to the container
container.appendChild(nodeDiv);

这段代码工作得很好。 但现在我正在使用 ExtJs 面板,我想在其中显示相同的内容。 我该怎么做?

我尝试这样做:

xtype: 'panel',
autoScroll: true,
border: 10,
bodyStyle:{"background-color":"white"}, 
height: Ext.getBody().getViewSize().height *0.80,
id: 'treeContainer'

Ext.getCmp('treeContainer').update(nodeDiv); //this didnt work
Ext.getCmp('treeContainer').addChildEls(nodeDiv); //no success

我在调试器中触发以下命令时得到此输出:

Ext.getElementById('treeContainer') 

<div class=​"x-panel x-panel-default" style=​"height:​553.6px;​" id=​"treeContainer">​
[object HTMLDivElement]
​</div>​

有什么帮助吗!?

最佳答案

面板的update函数需要 HTML 字符串而不是 DOM 对象:

// using a HTML string
Ext.getCmp('treeContainer').update("<div class='NodeContent'>" + node.displayText + "</div>");

// using a DOM object
Ext.getCmp('treeContainer').update(nodeDiv.outerHTML);

请注意,使用此函数将始终替换面板中所有现有的 HTML 内容。

<小时/>

如果您确实想要附加 HTML(即保留现有的 HTML 内容),则需要获取一个目标元素来附加 HTML/DOM 节点。

这可能是面板的默认渲染目标元素:

var panel = Ext.getCmp('treeContainer'),
    renderEl = panel.isContainer ? panel.layout.getRenderTarget() : panel.getTargetEl();

// using a DOM node
renderEl.appendChild(nodeDiv);

// using a HTML string
renderEl.insertHtml('beforeEnd', "<div class='NodeContent'>" + node.displayText + "</div>");

或者 - 因为这可能会根据您的面板布局而改变 - 您只需在初始 html 中创建一个包含元素配置:

{
    xtype: 'panel',
    id: 'treeContainer',
    html: '<div class="html-content"></div>'
}

并在此处附加您的内容:

Ext.getCmp('treeContainer').getEl().down('.html-content').appendChild(nodeDiv);

在后两种情况下,您应该随后更新面板的布局,因为您手动更改了其内容:

Ext.getCmp('treeContainer').updateLayout();

关于javascript - ExtJS4 中的 div.appendChild(div) 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22533092/

相关文章:

javascript - 联络表格无法正常运作

javascript - Vue 的 ref 是不是每次使用都会进行一次 DOM 查找?

javascript - 使用 requirejs、socketio、backbone 设置 jsfiddle

javascript - extjs 中的级联组合框

extjs - 如何在 Extjs 4.1 中使用 treecombo

javascript - <noscript> 或其他

javascript - 将不可选择的文本选项卡添加到 Ext.TabPanel?

extjs 4.1 如何在xtemplate中显示编号和项目符号

extjs - 在Extjs4中检查checkcolumn时更改网格行的样式

javascript - 如何在fiddler中修改json数据。