如何从控制器动态设置总记录

How to set total records dynamically from the controller

问题来了,

服务器响应 JSON 中的几条记录,这些记录大于商店中指定的网格 pageSize 参数。在此 JSON 中,服务器未返回带有数据的总数。此类记录的数量是已知的并且可能不同(该数量应在另一个请求中从服务器请求)。分页工具栏需要总数。

如何从视图控制器告诉代理 reader 这个数字?

我找到的唯一可行的解​​决方案是使用以下代码覆盖 Ext.data.reader.Json reader:

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"
}

您可以在控制器中执行此操作 -

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