在没有HTTP请求数据的情况下查询JsonRest

时间:2014-11-07 00:45:01

标签: dgrid dojo jsonreststore

我使用OnDemandGrid和JsonRest存储来从RESTful API检索数据并在表上显示它。该表相当复杂,并且使用了所有JsonRest CRUD方法。 以下是我使用的基本结构:

JsonRest:

...
var restStore = Observable(Cache(JsonRest({
    target:"source", 
    idProperty: "id"
}), Memory()));
...

OnDemandGrid:

...
var grid = new (declare([OnDemandGrid, Selection, Keyboard]))({
    sort: "name",
    store: restStore,
    columns: [
           {field: "name", label: "Name"},
           {field: "state", label: "State"},
           {field: "city", label: "city"}
         ],
    loadingMessage: "Loading data...",
    noDataMessage: "No data"
}, "grid");
grid.startup();
...

我想在客户端过滤数据而不发送HTTP请求。你能给我一些解决这个问题的想法吗?

自己的研究:

Dgrid教程表明所有都取决于dojo-store。

  

当dgrid与商店交互时,所有分页,过滤和排序职责都落在商店而不是网格上。 ...遇到数据呈现问题时,请始终检查商店实施(以及后端服务,如果适用)是否按预期执行。

所以这意味着我必须在商店方面解决这个问题。我想,我必须扩展JsonRest商店的QueryResults,但我一直都在闯墙。

我还想过查询Cache - 但是我放松了JsonRest然后......

1 个答案:

答案 0 :(得分:0)

如果您基本上对从服务中一次性预先检索数据有效负载感兴趣,然后在客户端进行所有排序/过滤/分页,请查看dojo-smore/RequestMemory - 您通过它一个url,一旦从URL中获取数据,它基本上就像一个内存存储,除了它的方法返回promises而不是立即值。