如何从ExtJS Store检索JSON数据数组

sct*_*skw 39 extjs

是否有一种方法允许我完全按照我使用以下方式加载我在ExtJS网格面板中存储的数据:

var data = ["value1", "value2"]
Store.loadData(data);
Run Code Online (Sandbox Code Playgroud)

我想有一个用户选项来重新加载网格,但需要考虑对商店的更改.用户可以进行更改并且网格会动态更新,但是如果我重新加载网格,即使已使用新更改更新了数据库,也会显示最初加载的数据.我宁愿不重新加载页面,只是让他们用新更改的商店重新加载网格数据本身.

我想我正在寻找这样的东西:

var data = Store.getData();
//data = ["value1", "value2"]
Run Code Online (Sandbox Code Playgroud)

一切都说完了之后.或者是否有不同的方法使用我不知道的新数据刷新网格.即使使用代理仍然使用"原始"数据,而不是新商店.

Li0*_*liQ 52

Store.getRange()似乎正是你正在寻找的.它会返回你Ext.data.Record[]- 记录数组.如果没有传递参数,则返回所有记录.

  • 我在寻找Store.getRange().json (7认同)
  • @ user291928:老实说,你没有指定你需要数据的格式,这个答案似乎有所帮助.我建议你选择一个答案. (4认同)
  • +1此外,旧链接已死.对于其他人的召集:http://docs.sencha.com/extjs/4.2.0/#!/api/Ext.data.Store-method-getRange (3认同)

小智 51

单线方法:

var jsonData = Ext.encode(Ext.pluck(store.data.items, 'data'));

不是很漂亮,但很短.


小智 9

 function getJsonOfStore(store){
        var datar = new Array();
        var jsonDataEncode = "";
        var records = store.getRange();
        for (var i = 0; i < records.length; i++) {
            datar.push(records[i].data);
        }
        jsonDataEncode = Ext.util.JSON.encode(datar);

        return jsonDataEncode;
    }
Run Code Online (Sandbox Code Playgroud)