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

时间:2015-04-28 16:28:55

标签: extjs

这是问题,

服务器使用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"
}

1 个答案:

答案 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;
            }
        });
    }