Javascript/ExtJS:Ext.getCmp('') 导致 TypeError ...不是函数

Posted

技术标签:

【中文标题】Javascript/ExtJS:Ext.getCmp(\'\') 导致 TypeError ...不是函数【英文标题】:Javascript/ExtJS: Ext.getCmp('') leads to TypeError ... is not a functionJavascript/ExtJS:Ext.getCmp('') 导致 TypeError ...不是函数 【发布时间】:2013-10-23 12:13:46 【问题描述】:

我有一些代码,以前可以正常工作,现在不行了。我有一组结果,显示在 GridPanel 中,我有一个文本字段来过滤结果。当输入的字母超过3个时,会相应过滤显示结果。 文本字段中有一个侦听器,它将对输入的值做出反应。输入内容后,它会触发以下命令:

grid  = Ext.getCmp('shopGrid');
console.log(grid);
store = grid.getStore();
console.log(store);

if (strLen >= 3) 
    store.filter('NAME', input, true, false);

 else 
    store.clearFilter();
    store.load();

我添加了 console.log() 来查看发生了什么。我将网格放到控制台中,它是一个包含各种元素的对象,这正是我所期望的。它并没有更进一步,并以错误消息终止: "TypeError: Ext.getCmp(...).getStore 不是函数"

我以前遇到过这种错误消息,但我还不完全理解它试图告诉我什么,因为我对 javascript 的内部工作原理的理解相当有限。在 ExtJS 中,函数 getStore() 仅为 GridPanel 定义。我的问题可能是 getCmp() 为我提供标准对象而不是 GridPanel 吗?但是 Javascript 中只有一种类型的对象,对吧? 无论如何,我使用的是 Ext 版本 3.4.1。任何帮助或提示将不胜感激。

【问题讨论】:

【参考方案1】:

您已将grid 设置为Ext.getCmp('shopGrid').getView(),因此它实际上是对view 的引用,而不是对网格本身的引用。取下getView(),它应该可以工作。

var grid  = Ext.getCmp('shopGrid'),
    store = grid.getStore();

【讨论】:

天哪。那 getView() 不应该在那里,我已经在我的例子中把它拿出来了。我正在尝试不同的功能,看看它是否必须这样做。我尝试了与您发布的完全相同的方法,只是使用 Ext.getCmp('shopGrid');但这会导致同样的问题。它有一个网格对象存储在“网格”变量中,但是当我尝试获取存储时,我会收到相同的错误消息。 在这种情况下,请给出定义shopGrid的代码。如果shopGrid 是有效的GridPanel,并且没有其他id 为shopGrid 的组件,getStore 肯定可以工作

以上是关于Javascript/ExtJS:Ext.getCmp('') 导致 TypeError ...不是函数的主要内容,如果未能解决你的问题,请参考以下文章

Javascript - ExtJs - 类

Javascript - ExtJs - Itemselector

Javascript - ExtJs - 事件

Javascript - ExtJs - 基本组件

javascript ExtJS_test

JavaScript Extjs CheckboxSelectionModel keepExisting