Sencha ExtJS将HTML控件附加到应用程序
Sencha ExtJS Append HTML Control To Application
所以我对Sencha和Javascript都是新手。在过去的几个小时里,我一直在努力。我试图将一个标准的HTML5控件附加到Sencha ExtJS面板中,以便在应用程序中使用。这就是控制:
<input type="file" id="files" name="file" />
我发现了几个论坛,可以解释如何做到这一点,但我做错了什么,论坛解释如下:
来自论坛:
Ext.DomHelper.append('parent-div',{tag:'div',cls:'newdiv cls',id:'newdiv id'});
myEl=新的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]
});
});
问题是我不知道在哪里添加这个以及如何显示它
总的来说,我只是想把一个HTML5输入控件添加到我的Sencha应用程序中。
谢谢,
Josh
更新:
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设置为新修改的版本时,它会丢失所有原始格式。你知道为什么只换一行就这么做吗?
下面是一个显示示例的JSFiddle。脚本本身很简单。只需将父容器的id传递给append方法:
Ext.DomHelper.append('parent-div', {tag:'input', type:'file', id:'files', name:'file'});
您可以将脚本添加到html文件的头部,如下所示:
<html>
<head>
<script type="text/javascript">
Ext.onReady(function() {
Ext.DomHelper.append('parent-div', {tag:'input', type:'file', id:'files', name:'file'});
});
</script>
</head>
<body>
<div id="parent-div"></div>
</body>
</html>
则它将在页面加载后运行。
更新
使用面板的items数组将字段添加到面板中比直接操作组件的DOM更容易。这是一个更新的JSFiddle,显示了相关的项目数组:
items : [
{
xtype: 'filefield',
name: 'file'
}
]
更新2
您可以通过将DomSpec传递到组件的autoEl-config:来呈现任何标记
{
xtype : 'component',
autoEl: {
tag : 'input',
type: 'file'
}
}
请参阅更新后的JSFiddle。
嘿,伙计们,谢谢大家的支持。我能够弄清楚如何做到这一点,并想为每个人发布所有代码。如果没有大家的帮助,我是做不到的。我希望这对其他人也有帮助。
var myPanal = Ext.create('Ext.panel.Panel', {
title: 'Hello',
width: 500,
height: 500,
renderTo: Ext.getBody(),
items:
[
{xtype: 'datefield',fieldLabel: 'Start date'},
{xtype: 'panel', id: 'pnlTest', html: '<input type="file" id="files" width="500" name="file" />'},
{xtype: 'button', width:75, height: 25, text: 'Read', margin: '5 0 0 5', handler:function()
{
var inputFiles = document.getElementById('files');
var file = inputFiles.files[0];
var start = 0;
var stop = file.size - 1;
var reader = new FileReader();
reader.onloadend = function(evt)
{
if (evt.target.readyState == FileReader.DONE)
{
alert(evt.target.result);
}
};
var blob = file.slice(start, stop + 1);
reader.readAsBinaryString(blob);
}}
]
});
- 什么'在Express中路由时,应用程序级中间件和路由器级中间件之间的区别是什么
- 如何使用ngModel将自定义控件的提供程序扩展器分离到Angular 2中的单独文件中
- 将jQuery操作应用于特定控件
- 陷入Json,无法使用敲除映射控件将Bindings应用于数据
- 引导程序旋转木马控件
- 引导程序转盘隐藏第一个和最后一个控件
- 为什么轨迹球控件在应用于相机以外的对象时向后
- Phonegap IOS应用程序图像缩放多点触控
- Sencha ExtJS将HTML控件附加到应用程序
- 带有Webbrowser控件和Javascript的VBS应用程序
- Google Visualization仅在ComboChart中的一个栏上应用ChartRangeFilter控件
- 如何设置Silverlight浏览器应用程序和嵌入式Web浏览器控件之间的通信
- 有什么方法可以在UWP应用程序中开发javascript UI控件?
- 从客户端应用程序的webview控件中调用宿主应用程序中编写的c#调用javascript函数
- Windows商店js应用程序导航控件导致数据绑定问题
- 如何在应用程序>Web浏览器控件中使用Google Maps API v3 ClientID
- 在web浏览器控件应用程序中从c++中取消脚本执行
- 如何在不使用ActiveX控件的情况下从应用程序获取当前登录的用户名
- 页面控件,准备事件不工作.Javascript windows 8应用程序
- Windows 8应用程序- Webview控件(c#).注入JavaScript来改变用户代理字符串