【发布时间】:2014-12-01 23:24:30
【问题描述】:
所以我对 Sencha 和 Javascript 都是新手。在过去的几个小时左右,我一直坚持这一点。我试图将标准 HTML5 控件附加到 Sencha ExtJS 面板以在应用程序中使用。这是控件:
<input type="file" id="files" name="file" />
我找到了几个论坛,它们有点解释如何做到这一点,但我做错了这里是论坛解释的内容:
来自论坛:
Ext.DomHelper.append('parent-div', {tag: 'div', cls: 'new-div-cls', id: 'new-div-id'});
myEl = new Ext.Element(document.createElement('div'));
Ext.Get('par-div').appendChild(myEl);
这是我尝试过的:
Ext.onReady(function ()
{
Ext.DomHelper.append('parent-div', {tag: 'div', cls: 'new-div-cls', id: 'new-div-id'});
var c = Ext.Get('par-div');
//var myEl = new Ext.Element(document.createElement('div'));
//Ext.Get('par-div').appendChild(myEl.dom);
//var mi = document.createElement("input");
//mi.setAttribute('type', 'text');
//mi.setAttribute('value', 'default');
//var myEl = new Ext.Element(mi);
//Ext.Get('par-div').appendChild(myEl);
var viewport = Ext.create('Ext.container.Viewport', {
layout: 'fit',
items: [myEl]
});
});
问题是我不知道在哪里添加它以及如何显示它。
总的来说,我只是想获取一个 HTML 5 输入控件并将其添加到我的 Sencha 应用程序中。
谢谢,
乔什
更新:
cpastore84,谢谢你的回复。所以我有一些代码几乎可以完成你所拥有的工作,现在的问题是它将输入字段放在我试图将其放入的面板后面:
Ext.create('Ext.panel.Panel', {
title: 'Hello',
width: 500,
height: 500,
html: '<p>World!</p>',
renderTo: Ext.getBody(),
listeners:
{
render: function( sender, eOpts )
{
var form = document.createElement('form');
var input = document.createElement('input');
input.name = 'parentNode';
input.type = 'file';
form.appendChild(input);
//var myEl = new Ext.Element(form);
var h = document.getElementById(sender.id);
h.appendChild(form);
alert(h);
}
}
});
您可以看到输入框出现在面板呈现在顶部之前。我希望这很容易解决。有什么想法吗?
更新 2:
我也尝试过从元素中获取 innerHTML 并替换一个虚拟
与输入。它在技术上确实有效,但是当您将 innerHTML 设置为新修改的版本时,它会丢失所有原始格式。知道为什么只更改一行时会这样做吗?
【问题讨论】:
标签: javascript extjs