Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ExtJS:返回json存储中的行/记录总数_Javascript_Json_Extjs_Combobox - Fatal编程技术网

Javascript ExtJS:返回json存储中的行/记录总数

Javascript ExtJS:返回json存储中的行/记录总数,javascript,json,extjs,combobox,Javascript,Json,Extjs,Combobox,我有一个json存储,它以json格式返回值。现在我需要获取json字符串中的行数/记录数,但当我使用store.getCount()函数时,它返回0,但组合框中填充了行,当我使用store.length时,我没有定义行数,可能是因为它不再是数组,而是从store返回,调用php脚本。无论如何,解决这个问题的最佳方法是什么?服务器的Json响应可以是这样的 { "total": 9999, "success": true, "users": [ {

我有一个json存储,它以json格式返回值。现在我需要获取json字符串中的行数/记录数,但当我使用
store.getCount()
函数时,它返回0,但组合框中填充了行,当我使用
store.length
时,我没有定义行数,可能是因为它不再是数组,而是从store返回,调用php脚本。无论如何,解决这个问题的最佳方法是什么?

服务器的Json响应可以是这样的

{
    "total": 9999,
    "success": true,
    "users": [
        {
            "id": 1,
            "name": "Foo",
            "email": "foo@bar.com"
        }
    ]
}
然后您可以使用
读卡器:{
键入:“json”,
root:'用户',
totalProperty:'total',
successProperty:“成功”
}
在您的商店对象中。

尝试以下方法:

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

从您提供的数据源开始,您可以调用
getTotalCount
以获取数据集大小。

如果您使用ajax代理进行存储,则类似smth

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()
  }
});

它是一个对象,我尝试了.length,但它不起作用。您的JsonStore是如何加载的(代理、store.loadData、内联数据)?