ExtJs getTotalCount() 不返回商店中的记录数
ExtJs getTotalCount() not returning the number of records in the store
当我从以下列方式在商店中加载数据的控制器调用函数时,
var store= new Ext.getStore('MyStore');
store.load();
响应头显示返回了以下JSON数据,
{"usrdata":[{"name":"John",
"roll":"5",
"address":"abcd"
}]
}
但问题是当我写
console.log(store.getTotalCount());
它在控制台上显示“0”(零)。
有人可以帮我确定为什么它不显示商店中记录数量的实际计数。
我感觉可能是调用函数的时候store还没有加载完(可能我理解的不对)
以下是我店铺的代码:
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,
});
使用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());
}
});
以防万一我们解决了错误的问题。通常你会希望一个总计数器总是从你的数据中从服务器返回,这样分页等都会自动工作。有关示例,请参阅 here:
{
"total": 122,
"offset": 0,
"users": [
{
"id": "ed-spencer-1",
"value": 1,
"user": {
"id": 1,
"name": "Ed Spencer",
"email": "ed@sencha.com"
}
}
]
}
您需要对您的商店定义进行微小的更改
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,
});
PS - 您的服务需要 return 计数。 getTotalCount() 不会 return 您的商店包含多少条记录,它 return 是 reader 对象的 totalProperty 持有的数量。
因此,如果您的服务正在 return 处理数据 -
{
"total": 122,
"offset": 0,
"users": [
{
"id": "ed-spencer-1",
"value": 1,
"user": {
"id": 1,
"name": "Ed Spencer",
"email": "ed@sencha.com"
}
}
]
}
你的 reader 对象看起来像 -
reader: {
type: 'json',
root: 'usrdata',
totalProperty : 'total'
successProperty: 'success'
},
当我从以下列方式在商店中加载数据的控制器调用函数时,
var store= new Ext.getStore('MyStore');
store.load();
响应头显示返回了以下JSON数据,
{"usrdata":[{"name":"John",
"roll":"5",
"address":"abcd"
}]
}
但问题是当我写
console.log(store.getTotalCount());
它在控制台上显示“0”(零)。
有人可以帮我确定为什么它不显示商店中记录数量的实际计数。
我感觉可能是调用函数的时候store还没有加载完(可能我理解的不对)
以下是我店铺的代码:
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,
});
使用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());
}
});
以防万一我们解决了错误的问题。通常你会希望一个总计数器总是从你的数据中从服务器返回,这样分页等都会自动工作。有关示例,请参阅 here:
{
"total": 122,
"offset": 0,
"users": [
{
"id": "ed-spencer-1",
"value": 1,
"user": {
"id": 1,
"name": "Ed Spencer",
"email": "ed@sencha.com"
}
}
]
}
您需要对您的商店定义进行微小的更改
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,
});
PS - 您的服务需要 return 计数。 getTotalCount() 不会 return 您的商店包含多少条记录,它 return 是 reader 对象的 totalProperty 持有的数量。
因此,如果您的服务正在 return 处理数据 -
{
"total": 122,
"offset": 0,
"users": [
{
"id": "ed-spencer-1",
"value": 1,
"user": {
"id": 1,
"name": "Ed Spencer",
"email": "ed@sencha.com"
}
}
]
}
你的 reader 对象看起来像 -
reader: {
type: 'json',
root: 'usrdata',
totalProperty : 'total'
successProperty: 'success'
},