当我从控制器调用函数时,按以下方式加载商店中的数据,
var store= new Ext.getStore('MyStore');
store.load();
响应标头显示返回以下JSON数据
{"usrdata":[{"name":"John",
"roll":"5",
"address":"abcd"
}]
}
但问题是我写的时候
console.log(store.getTotalCount());
在控制台上显示“0”(零)。
请有人帮我确认一下为什么它没有显示商店中记录数的实际数量。
我觉得可能是因为调用函数时商店还没有完成加载(可能是我不正确)。
以下是我店的代码:
Ext.define('MyApp.store.MyStore', {
extend: 'Ext.data.Store',
model: 'MyApp.model.MyModel',
timeout : 60000,
proxy: {
type: 'ajax',
api: {
create: 'php/insert.php',
read: 'php/read.php',
update: 'php/update.php',
destroy: 'php/delete.php',
},
reader: {
type: 'json',
root: 'usrdata',
successProperty: 'success'
},
writer: {
type: 'json',
writeAllFields: true,
encode: true,
root: 'usrdata'
}
},
autoLoad: true,
});
答案 0 :(得分:1)
使用load方法中的回调来获取记录计数:http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.data.Store-method-load
store.load({
scope: this,
callback: function(records, operation, success) {
// the operation object
// contains all of the details of the load operation
console.log(records.length);
// Alternative
console.log(store.getTotalCount());
}
});
答案 1 :(得分:0)
以防我们解决错误的问题。通常你会希望总计数器总是从你的数据服务器返回,这样分页等都会自动运行。有关示例,请参阅here:
{
"total": 122,
"offset": 0,
"users": [
{
"id": "ed-spencer-1",
"value": 1,
"user": {
"id": 1,
"name": "Ed Spencer",
"email": "ed@sencha.com"
}
}
]
}
答案 2 :(得分:0)
您的商店定义需要进行微小的更改
Ext.define('MyApp.store.MyStore', {
extend: 'Ext.data.Store',
model: 'MyApp.model.MyModel',
timeout : 60000,
proxy: {
type: 'ajax',
api: {
create: 'php/insert.php',
read: 'php/read.php',
update: 'php/update.php',
destroy: 'php/delete.php',
},
reader: {
type: 'json',
root: 'usrdata',
totalProperty : '<the_node_of_json_response_which_holds_the_count>'
successProperty: 'success'
},
writer: {
type: 'json',
writeAllFields: true,
encode: true,
root: 'usrdata'
}
},
autoLoad: true,
});
&#13;
PS - 您的服务需要返回计数。 getTotalCount()不返回商店包含的记录数,它返回reader对象的totalProperty所包含的数字。
因此,如果您的服务正在返回数据 -
{
"total": 122,
"offset": 0,
"users": [
{
"id": "ed-spencer-1",
"value": 1,
"user": {
"id": 1,
"name": "Ed Spencer",
"email": "ed@sencha.com"
}
}
]
}
&#13;
您的读者对象看起来像 -
reader: {
type: 'json',
root: 'usrdata',
totalProperty : 'total'
successProperty: 'success'
},
&#13;