TECHTOGOU

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

coder 2024-05-16 原文

我是 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/

有关javascript - 能详细解释下.el, getEl(), Ext.get() 吗?的更多相关文章

  1. c# - 速记访问器和修改器 - 2

    我正在学习C#,并且正在学习如何使字段对类私有(private),以及使用Getters和Setters公开方法而不是字段值。是get;set;在方法1和方法2中是否等效?例如一个是另一个的简写吗?classStudent{//Instancefieldsprivatestringname;privateintmark;//Method1publicstringName{get;set;}//Method2publicintMark{get{returnmark;}set{mark=value;}}}最后,当您想在获取或设置值之前执行计算时,是否会使用方法2?例如将值转换为百分比或执行

  2. c# - 调用现场解释? - 2

    浏览互联网,我无法以简单的方式理解-术语调用站点(@dlr)。我一直在读hereCallSite是:一个网站说Thelocationinwhichthemethodiscalled.一本书说:callsite.ThisisthesortofatomoftheDLR-thesmallestpieceofcodewhichcanbeconsideredasasingleunit.Oneexpressionmaycontainalotofcallsites,butthebehaviorisbuiltupinthenaturalway,evaluatingonecallsiteatatime.

  3. 如何快速上手Vue框架? - 2

    编译软件:IntelliJIDEA2019.2.4x64运行环境:Google浏览器Vue框架版本:Vue.jsv2.7.14目录一.框架是什么?二.怎么写一个Vue程序(以IDEA举例)?三.什么是声明式渲染?3.1声明式3.2渲染四.Vue如何操作标签体(双标签中的内容)?五.Vue如何操作属性值?5.1单向绑定5.2双向绑定六.Vue如何实现条件渲染?6.1什么是条件渲染?6.2v-if6.3v-else6.4v-show6.5v-if与v-show

  4. Springboot支付宝沙箱支付---完整详细步骤 - 2

    1、进入支付宝开发平台—沙箱环境沙箱环境-支付宝文档中心1.1、进入个人沙箱环境点击进入沙箱环境并用支付宝登陆沙箱管理界面如图所示appid,支付宝网关,自定义密钥等这里是沙箱支付宝(虚拟)的账号和密码,可以用来支付1.2、接下来进行几个密钥的生成点击进入密钥工具点击生成这时我们拿到两个密钥,将它们保存,这两个密钥很重要应用私钥应用公钥1.3、拿到两个密钥后,进行自定义密钥配置进入最开始的沙箱管理界面,点击自定义密钥,点击设置(查看ÿ

  5. c# - ASP.NET MVC 中的发布/重定向/获取模式 - 2

    在ASP.NETMVC中实现Post/Redirect/Get模式的最佳实践是什么?特别是,当您想重定向回初始操作/Controller时,执行此操作的最佳方法是什么?这是我目前的做法:向用户显示表单。在表格中,使用<%=Html.Hidden("returnUrl")%>在行动中,使用ViewData["returnUrl"]=Request.Url;用户通过POST提交表单重定向到returnUrl模型绑定(bind),如果没有null.否则,重定向到主页。这样就完成了工作,但感觉这会导致大量重复。我还意识到我可能会重定向到Request

  6. c# - .NET 框架中是否有针对不同 Web 方法类型(GET、PUT、POST、DELETE、HEAD)的常量? - 2

    我刚刚在创建RESTfulWCF服务时注意到WebInvoke属性上的Method参数区分大小写(需要大写)。所以,[WebInvoke(Method="Delete")]不等于[WebInvoke(Method="DELETE")]这个错误导致了ProtocolException:System.ServiceModel.ProtocolException:Theremoteserverreturnedanunexpectedresponse:(405)MethodNotAllowed.我想知道我应该使用.NET框架中的一组常量来代替上面示例中的“DEL

  7. c# - 如何反序列化其中包含无效字段名称的 JSON 对象 - 2

    我有一个具有以下结构的JSON请求:"formats":{"flash_embed":"http://a3.vikiassets.com/assets/vikiplayer-922746a667cfd38137a7e45df6ba1b95.swf?auto_play=true&language_codes=en&media_id=74965&partner=16&source=api_v3","m3u8":"http://wpc.354a.edgecastcdn.net/00354A

  8. c# - 是否有使用 POST 而不是 GET 的 MVC Pager? - 2

    这是我的问题。我有一个具有大量搜索条件的SearchViewModel,这些值根本不适合URL。我目前正在使用TroyGoode的Html.PagedListPager,但它被设计为使用Url.Action()来发送URL中的参数。这是一个例子。我不认为客户端过滤是一种选择,因为我会有很多记录。@Html.PagedListPager((IPagedList)@Model.SearchResults,page=>Url.Action("Results",new{YearBuiltFrom=Model.YearBuiltFrom,}))}如果您只有一两个简单的参数,

  9. c# - 影响 EF 代码中的外键列命名(CTP5) - 2

    我有一个POCO类,它与另一个类有两个单向一元关系,两个类共享一个祖先。生成的模式中的外键名称不反射(reflect)属性名称。(属性MainContact和FinancialContact提供PersonId和PersonId1字段名称)。我如何影响架构生成以生成与属性名称匹配的数据库列名称?模型看起来像这样:代码如下所示:publicclassCustomerContext:DbContext{publicDbSet<Organisation>Organisations{get;set;}publicDbSet<Person>Persons{get;set;

  10. c# - 使用 Telerik 导出到 Excel (XLSX) 时如何解释集合? - 2

    场景我正在使用TelerikUIForWindowsforms.我有一个RadGridView我在上面表示一个名为MarketInfo的自定义类型:PublicNotInheritableClassMarketInfo...PublicReadOnlyPropertyParticipantsAsReadOnlyCollection(OfParticipantInfo)GetReturnMe.GetParticipants()EndGetEndProperty...EndClass它只包含文本和bool值属性,以及返回另一个自定义类型集合的Participants属性:PrivateFu

随机推荐

  1. C#:自定义程序集目录 - 2

    假设我们有一个应用程序,它包含一个可执行文件和5个库。通常所有这些都将包含在一个目录中,库将从那里加载。是否可以这样做,例如,我可以将一些库放在一个名为Lib的目录中,而将其余的库放在一个名为Lib2的目录中?这样应用程序目录将只包含可执行文件本身,而其他程序集将包含在各种逻辑目录中。我该怎么做?我想知道如何加载程序集,以及如何构建应用程序将程序集放在正确的目录中。 最佳答案 您可以向您的app.config添加额外的搜索路径,它会在其中查找以加载程序集。例如<runtime><assemblyBindingxml

  2. c# - 在没有 NativeMethods 的情况下,如何找到给定 hWnd 的窗口的位置/位置? - 2

    我目前正在使用WatiN,发现它是一个很棒的Web浏览自动化工具。但是,截至上一个版本,它的屏幕捕获功能似乎有所欠缺。除了一些thisStackOverflowquestion之外,我已经想出了一个可行的解决方案来从屏幕上捕获屏幕截图(独立生成类似于codebyCharlesPetzold的代码).不幸的是,缺少一个组件:实际窗口在哪里?WatiN方便地向您提供浏览器的hWnd,因此我们可以(通过这个简化的示例)设置为从屏幕复制图像,如下所示://browseriseitheranWatiN.Core.IEoraWatiN.Core.FireFox...IntPtrhWnd=brows

  3. c# - 在 Windows 服务中使用 Thread.Sleep() - 2

    我正在编写一个需要长时间休眠的Windows服务(最长休眠时间为15小时,最短时间为30分钟)。我目前正在使用Thread.Sleep(calculatedTime)将我的代码置于sleep模式。Thread.Sleep是最好的选择还是我应该使用计时器?我已经用谷歌搜索了一段时间,但找不到简洁的答案。由于这是一个Windows服务,我不必担心锁定UI,所以我想不出不使用Thread.Sleep的理由。如有任何见解,我们将不胜感激。 最佳答案 我会使用计时器Thread.Sleep,它可能会导致阻塞,从而阻止服务关闭。如果间隔如此广泛

  4. c# - C++ .NET 正在消亡吗? - 2

    我在某处听说微软将把精力集中在C#而不是.NET平台的C++上。由于GUI设计器可用于C#而不是C++,我可以看到这是真的迹象。所以我想知道.NET中的C++是否正在消亡,以及它在未来是否会继续仅次于C#。 最佳答案 如果您在应用程序开发中以.NET框架为目标,那么与C#相比,C++/CLI是二等公民。C#是专为.NET框架设计的语言,同时C++/CLI扩展允许开发人员桥接native代码和托管代码。但是不要将C++与C++/CLI混淆(C++.NET是同一回事...)。C++在内核、游戏、高性能和服务器应用程序(例如SQL服务器)

  5. c# - 如何摆脱选中的列表框选择突出显示效果? - 2

    当在选中的列表框中单击一个项目时,它会突出显示。我怎样才能防止这种突出效果?我可以连接到SelectedIndexChanged事件并清除选择,但突出显示仍然发生并且您会看到一个光点。事实上,如果您按住鼠标单击,在单击复选框区域后从未松开它,则所选内容会一直突出显示,直到您释放鼠标按钮。我基本上想完全摆脱这种突出显示效果。 最佳答案 使用以下内容:privatevoidcheckedListBox1__SelectedIndexChanged(objectsender,EventArgse){checkedListBox1.Clea

  6. c# - Web API2 NinjectWebCommon.cs 没有出现 - 2

    我正在使用VisualStudio2013中的空WebAPIFramework4.5。显然NinjectWebCommon.cs没有出现。我是通过Nuget安装的,注入(inject),Ninject.Web.Common,Ninject.MVC5,Ninject.Web.Common.WebHost,Ninject.Web.WebApi,Ninject.web.WebApi.WebHost但是NinjectWebCommon.cs仍然没有出现。我还需要安装什么?我可以手动添加该文件吗?谢谢 最佳答案 看起来最新的Ninject.W

  7. c# - 如何停止 .Net Core Web API 中的自引用循环? - 2

    我遇到了一些问题,我猜这些问题与使用.NETCoreWebAPI和EntityFrameworkCore的自引用有关。当我为某些导航属性添加.Includes时,我的WebAPI开始阻塞。我在较旧的WebAPI中找到了一个解决方案,但我不知道如何为.NETCoreWebAPI实现相同的解决方案(我仍处于早期学习阶段)。旧的解决方案是将其粘贴在Global.asax的Application_Start()中:GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoop

  8. c# - 如何对 Visibility 属性进行简单的 XAML (WPF) 条件绑定(bind) - 2

    我有一个带有属性的View模型:publicclassMyModel{publicboolIsEnabled{get;set;}}我想使用这个属性来切换按钮状态。如果bool值为真,我想隐藏按钮,否则显示它。我试过这样的事情:<ButtonVisibility="{BindingIsEnabled?Hidden:Visible}">Enable</Button>但这不合适。我尝试了一些更复杂的解决方案,但我猜我遗漏了一些微不足道的东西。有什么建议吗? 最佳答案 因为你想在Hidden和Visi

  9. c# - 在 Windows Phone 8.1 运行时读取项目文件夹中的文本文件 - 2

    我想在应用程序第一次启动时将我项目根文件夹中的一个文件.txt读入我的数据库,但我不知道该怎么做。任何人都知道我该怎么做,请帮助我...谢谢我在WindowsPhone8.1运行时工作。 最佳答案 如果你想从你的项目中读取一个文件,你可以这样做:stringfileContent;StorageFilefile=awaitStorageFile.GetFileFromApplicationUriAsync(newUri(@"ms-appx:///example.txt"));using(StreamReadersRe

  10. c# - MemoryStream.CopyTo 不工作 - 2

    TiffBitmapDecoderdecoder=newTiffBitmapDecoder(imageStreamSource,BitmapCreateOptions.PreservePixelFormat,BitmapCacheOption.Default);using(MemoryStreamallFrameStream=newMemoryStream()){foreach(BitmapFrameframeindecoder.Frames){using(MemoryStreamms=newMemoryStream()){JpegBitmapEncoderenc=newJpegBit