我有一个ExtJS(4.0)网格,它工作正常。现在我希望它通过添加过滤器来推进它。我希望用户能够按状态过滤项目。
我创建了以下商店:
var status_store = Ext.create('Ext.data.Store', {
model: 'Statuses',
proxy: {
type: 'ajax',
url: '/json/statuses/',
reader: 'json'
}
});
我可以看到它加载,/ json / statuses /将返回以下json对象:
[
{
"name": "OK",
"isActive": true
},
{
"name": "Outdated",
"isActive": true
},
{
"name": "New",
"isActive": true
}
]
现在我定义过滤器:
var filters = {
ftype: 'filters',
encode: encode,
local: local,
filters: [{
type: 'list',
dataIndex: 'name',
store: 'status_store',
labelField: 'name'
}]
};
并将过滤器添加到我的列定义中:
{text: 'Status', width: 120, dataIndex: 'status', sortable: true, filterable: true, filter: {type: 'list'}},
当网格加载时,我会收到以下错误:
Uncaught TypeError: Object json has no method 'read' (ext-all-debug.js:25702)
当我点击菜单的列标题时:
Uncaught TypeError: Object status_store has no method 'on' (ListMenu.js:69)
我该如何解决这个问题,或者我在做一些概念错误的事情?
以下是我的代码的完整引用,以防万一:http://pastebin.com/SNn6gFJz
答案 0 :(得分:3)
感谢您诊断问题。 4.1修复是这个修改ListMenu.js
在构造函数的else部分
替换
me.store.on('load', me.onLoad, me);
与
// add a listener to the store object
var storeObject = Ext.StoreMgr.lookup(me.store);
storeObject.on('load', me.onLoad, me);
me.store = storeObject;
答案 1 :(得分:0)
filters: [{
type: 'list',
dataIndex: 'name',
store: 'status_store',
labelField: 'name' ,
options:[a,b]
}]
您还必须在列表过滤器中提供选项。
答案 2 :(得分:0)
我遇到了类似的问题。我在这里关注了另一个答案的@jd评论但是选项菜单只是说“正在加载......”。我解决了这个问题here。