我很难学习Javascript / Ext-JS。我为Eclipse中的一些代码完成设置了Spket插件,但是比如说,如果我看到像这样的一段代码....
Ext.ComponentMgr.get('communicationName').findById('showBannerId').add(
{
xtype : 'displayfield',
id : 'bannerField',
value : banners,
autoHeight : true,
width : 1000
});
Spket突出显示.get红色,因此我无法进一步完成get()的编码。除了试图寻找showBannerId(我发现它是一个表...它有布局:'table'成员)。我在Ext-JS API中发现这个Ext-JS成员有一个名为'add'的方法?
**侧面注意我为什么要查看这段代码:
基本上我需要确保showBannerId不会不断添加这些displayFields。应检查id bannerField以查看:
- 如果它存在( 我刚想出来 )Ext.get('bannerField');和
- 如果它存在则应该只编辑displayField ...而不是重新创建它。如何编辑其属性( 研究xtype displayfield的setValue方法) ?
希望这有道理......如果我不清楚,请告诉我。
答案 0 :(得分:1)
<强>资源强>
ExtJS Documentation和Examples应该是关于ExtJS的头号信息来源。
发现方法/对象
在您的特定情况下,您如何知道相关元素采用add
方法?您基本上必须查看您在文档中调用的函数,以及它们将返回的内容。例如,您拨打Ext.ComponentMgr.get
。在文档中,这将返回Ext.Component
。值得注意的是,有许多ExtJS对象继承自Ext.Component
(事实上,大多数对象都是从它继承的!)。
通过编程,您可以通过调用Ext.Component
或getXType
来确定isXType(type)
的实际类型,以检查某些内容是否属于某种类型的组件(Ext.Component
文档有一个xtypes列表及其对应的类)。根据你所写的内容,如果你想知道你有什么样的组件,你可能最好通过你的源代码查看有问题的id(即showBannerId
),看看它是怎么回事声明,或声明它作为其一部分的对象。
您的具体问题
如果你想......
以下代码对您有所帮助:
var elem = Ext.getCmp("bannerField") //Shorthand for Ext.ComponentMgr.get
//check if a field exists:
if(!Ext.isEmpty(elem)) {
//make sure it is the right type
if(elem.isXType('displayfield')) {
elem.setValue(banners) //since we know this is an Ext.form.DisplayField component
}
} else {
//element does not exist, so add it
Ext.ComponentMgr.get('communicationName').findById('showBannerId').add({
xtype : 'displayfield',
id : 'bannerField',
value : banners,
autoHeight : true,
width : 1000
});
}
请注意,我使用Ext.getCmp
(获取Ext.component
)而不是Ext.get
(获取Ext.Element
;实质上是DOM对象的包装器)。
工具强>
如果您正在寻找使用ExtJS的好工具,我建议您查看Illumination,这是一个firebug扩展,它允许您比查看原始javascript对象更容易地查看ExtJS对象。如果你正在寻找对javascript和ExtJS的良好IDE支持......这是另一个问题!在IDE中支持javascript通常不是很好。