我有一个以json格式返回值的json存储。现在我需要获取json字符串中的行/记录数,但是当我使用store.getCount()
函数时,它返回0,但组合框中填充了行,当我使用store.length
时,我得到了未定义的,可能是因为它不再是一个数组,它从商店返回,这是调用PHP脚本。无论如何,这个问题的最佳方法是什么?
答案 0 :(得分:4)
试试这个:
var myStore = Ext.extend(Ext.data.JsonStore, {
... config...,
count : 0,
listeners : {
load : function(){
this.count = this.getCount();
}
}
Ext.reg('myStore', myStore);
然后使用内部面板:
items : [{
xtype : 'myStore',
id : 'myStoreId'
}]
每当你需要计算时,你就可以这样做:
Ext.getCmp('myStoreId').count
答案 1 :(得分:3)
来自服务器的Json响应可能是这样的......
{
"total": 9999,
"success": true,
"users": [
{
"id": 1,
"name": "Foo",
"email": "foo@bar.com"
}
]
}
然后,您可以在商店对象中使用reader: {
type : 'json',
root : 'users',
totalProperty : 'total',
successProperty: 'success'
}
。
答案 2 :(得分:3)
从docs开始,如果您提供了数据源,则可以调用getTotalCount
来获取数据集大小。
答案 3 :(得分:3)
如果您对商店使用ajax代理,请使用
proxy : {
type : 'ajax',
url : 'YOUR URL',
reader : {
type : 'json',
root : 'NAME OF YOUR ROOT ELEMENT',
totalProperty : 'NAME OF YOUR TOTAL PROPERTY' // requiered for paging
}
}
然后加载您的商店 store.load(); 将发送Ajax异步请求,因此您应该像这样检查回调计数
store.load({
callback : function(records, operation, success) {
console.log(this.getCount()); // count considering paging
console.log(this.getTotalCount()); // total size
// or even
console.log(records.length); // number of returned records = getCount()
}
});