gpt4 book ai didi

javascript - 能详细解释下.el, getEl(), Ext.get() 吗?

转载 作者:可可西里 更新时间:2023-11-01 02:37:12 25 4
gpt4 key购买 nike

我是 Sencha ExtJs 的新手

我不明白 Ext.getCmp('component_id').getEl().hide(); 行。 .getEl()有什么用。我可以直接写 Ext.getCmp('component_id').hide(); 吗?

同时向我解释一下 .el,Ext.get()

最佳答案

Ext.getCmp() VS Ext.get()

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.getEl() VS MyCmp.el

两者都只是检索 MyCmp 组件的顶级 DOM 元素。

当前版本的 ExtJS (4.2.1) 定义了 .getEl() 函数如下:

MyCmp.getEl = function () {
return this.el;
}

这意味着 MyCmp.getEl()MyCmp.el 绝对相等

如果您希望让您的代码简洁明了,请使用 .el。但是,如果将来 ExtJS 向组件的 DOM 元素检索过程添加额外的逻辑(例如,首先检查它是否存在),.getEl() 可能会有用。

我更喜欢 .el


MyCmp.hide() VS MyCmp.el.hide()

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;
}

但是,这两个函数似乎产生了相同的结果。他们只是将 style="display: none;" 添加到组件的 DOM 元素。

我使用 MyCmp.hide()

关于javascript - 能详细解释下.el, getEl(), Ext.get() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16166017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com