我是Sencha ExtJs的新手
我不明白行Ext.getCmp('component_id').getEl().hide();
。 .getEl()
有什么用?我可以直接写Ext.getCmp('component_id').hide();
吗?
并向我解释.el,Ext.get()
。
答案 0 :(得分:12)
Ext.getCmp()
在ExtJS组件树中查找现有(已创建)组件。请注意,不鼓励使用它。相反,请依靠ComponentQuery。
Ext.get()
按ID找到 DOM元素。例如:
<html>
<body>
<div id="target">Hello, world!</div>
</body>
</html>
Ext.get('target')
将返回div#target
DOM元素。
我个人从不使用任何一个。相反,我使用ComponentQuery定位组件,然后检索它们的DOM元素,如下所述。
两者都只检索MyCmp组件的顶级DOM元素。
当前版本的ExtJS(4.2.1)定义了.getEl()
函数,如下所示:
MyCmp.getEl = function () {
return this.el;
}
这意味着MyCmp.getEl()
和MyCmp.el
完全相同。
如果您希望保持代码简洁和甜蜜,请使用.el
。但是,如果将来ExtJS为组件的DOM元素检索过程添加了额外的逻辑(例如,首先检查它是否存在),.getEl()
可能会有用。
我更喜欢.el
。
MyCmp.hide()
和MyCmp.el.hide()
是两个不同的功能。当前版本的ExtJS(4.2.1)将它们定义如下:
MyCmp.hide = function (animateTarget, cb, scope) {
var me = this,
continueHide;
if (me.pendingShow) {
delete me.pendingShow;
} if (!(me.rendered && !me.isVisible())) {
continueHide = (me.fireEvent('beforehide', me) !== false);
if (me.hierarchicallyHidden || continueHide) {
me.hidden = true;
me.getHierarchyState().hidden = true;
if (me.rendered) {
me.onHide.apply(me, arguments);
}
}
}
return me;
}
和
MyCmp.el.hide = function (animate){
if (typeof animate == 'string'){
this.setVisible(false, animate);
return this;
}
this.setVisible(false, this.anim(animate));
return this;
}
但是,这两种功能似乎都会产生相同的结果。他们只需在组件的DOM元素中添加style="display: none;"
。
我使用MyCmp.hide()
。
答案 1 :(得分:2)
1)
Ext.getCmp('')
- &gt; ExtJS在构造页面时维护组件列表。使用getCmp(&#39;唯一ID&#39;)从列表中提取组件2)
getEl()
- &gt;返回组件的HTML元素/ DOM3)
hide()
- &gt;只是将css(例如:"display:none"
)应用于组件的样式
Ext.getCmp('component_id').hide()
相当于
Ext.getCmp('component_id').getEl().hide()