Запросы JsonRest без HTTP-запросов данных
Я использую 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.
Когда dgrid взаимодействует с хранилищем, все обязанности по подкачке, фильтрации и сортировке ложатся на хранилище, а не на сетку.... При возникновении проблем с рендерингом данных всегда проверяйте, что реализация хранилища (и серверная служба, если применимо) работают должным образом.
Так что это означает, что я должен решить эту проблему на стороне магазина. Полагаю, мне нужно расширить QueryResults магазина JsonRest, но я все время бьюсь об стену.
Я также подумал сделать запрос к Cache - но тогда я теряю JsonRest...
1 ответ
Если вы в основном заинтересованы в первоначальном извлечении полезных данных из вашего сервиса сразу, но затем выполняете всю сортировку / фильтрацию / разбиение на страницы на стороне клиента, взгляните на dojo-smore / RequestMemory - вы передаете url
и он в основном действует как хранилище памяти после извлечения данных из URL, за исключением того, что его методы возвращают обещания, а не непосредственные значения.