这是问题,
服务器使用JSON中的多个记录进行响应,该记录的数量大于Store中指定的grid pageSize参数。此JSON中的服务器不会返回包含数据的总数。此类记录的数量是已知的,可能不同(应在另一个请求中从服务器请求此数字)。寻呼工具栏需要总数。
如何从视图控制器告诉代理阅读器这个号码?
我发现唯一可行的解决方案是使用以下代码覆盖Ext.data.reader.Json阅读器:
Ext.define('MyApp.custom.AnotherReader',{
extend: 'Ext.data.reader.Json',
alias : 'reader.anotherReader',
// разбираем ответ и записываем в store
getResponseData : function(response) {
var st = Ext.decode(response.responseText);
st.total = 5;
//console.log(st);
return st;
}
});
问题是我无法从viewcontroller动态更改此总参数。
JSON 1:
[
{
"id":"1",
"user_id":"11",
},
{
"id":"2",
"user_id":"12",
},
{
"id":"3",
"user_id":"13",
},
{
"id":"4",
"user_id":"14",
},
{
"id":"5",
"user_id":"15",
}
]
JSON 2:
{
"records_count": "5"
}
答案 0 :(得分:1)
您可以在控制器内执行此操作 -
// some event handler/ or normal function inside your Controller that you'll call
somFunction: function() {
var me = this;
var store = Ext.getStore(<storeId>); // you can even pass the store
//instance as a parameter to this function
var reader = store.getProxy().getReader();
Ext.override(reader, {
getResponseData : function(response) {
var st = Ext.decode(response.responseText);
st.total = me.getValueYouWant();
return st;
}
});
}