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 ...不是函数的主要内容,如果未能解决你的问题,请参考以下文章