0

我有一些代码,以前可以正常工作,现在不行了。我有一组结果,显示在 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 is not a function”

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

4

1 回答 1

4

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

var grid  = Ext.getCmp('shopGrid'),
    store = grid.getStore();
于 2013-10-23T12:26:34.540 回答