我是Sencha ExtJs的新手

我不了解Ext.getCmp('component_id').getEl().hide();行。 .getEl()的用途是什么。我可以直接写Ext.getCmp('component_id').hide();吗?

并向我介绍.el和Ext.get()

最佳答案

Ext.getCmp()与Ext.get()Ext.getCmp()在ExtJS组件树中找到一个现有的(创建的)组件。请注意,不建议使用它。而是依靠ComponentQueryExt.get()通过ID查找 DOM元素。例如:

<html>
    <body>
        <div id="target">Hello, world!</div>
    </body>
</html>
Ext.get('target')将返回div#target DOM元素。
我个人从不使用任何一个。取而代之的是,我使用ComponentQuery定位组件,然后检索其DOM元素,如下所述。

MyCmp.getEl()与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;
}
但是,这两个函数似乎产生相同的结果。他们只是在组件的DOM元素中添加style="display: none;"
我使用MyCmp.hide()

08-17 13:09