Использование хранилища REST dgrid/dstore с фильтром

Я хотел бы расширить dstore/Rest, чтобы он принимал параметр, который используется для фильтрации хранилища. В этой статье предлагается использовать этот метод для изменения запроса dstore: http://www.sitepen.com/blog/2014/11/17/introduction-dstore/

Пример:

new MyExtendedRestStore({color: 'red'});

Я хотел бы, чтобы внутренние компоненты MyExtendedRestStore изменили запрос GET, чтобы теперь в фильтре был установлен цвет, поэтому любые вызовы обновления будут придерживаться добавления цвета = красного в запрос. Если я правильно понимаю, это также должно заставить миксин dstore/Trackable подчиняться фильтру.


person EToreo    schedule 09.12.2014    source источник


Ответы (1)


В dgrid 0.4 экземпляры, использующие OnDemandList или Pagination, могут принимать любую коллекцию — будь то корневое хранилище или коллекция, сгенерированная в результате выполнения операций над этим хранилищем. filter — одна из таких операций.

В вашем случае вы заявляете, что хотите, чтобы сетка всегда отображала только красные элементы, поэтому вы могли бы очень легко передать сетку отфильтрованную коллекцию, и не требуется пользовательское расширение Rest:

var TrackableRestStore = declare([ Rest, Trackable ]);
var store = new TrackableRestStore({ target: '...' });
var filteredCollection = store.filter({ color: 'red' });
var grid = new OnDemandGrid({
    collection: filteredCollection,
    columns: ...
});

Это также обсуждается в конце учебника по сетям и хранилищам dgrid.

person Ken Franqueiro    schedule 09.12.2014
comment
Спасибо. Есть ли способ зацепить это, чтобы обновить? - person EToreo; 09.12.2014
comment
refresh собирается перечитать из назначенной коллекции. Если вы назначаете коллекцию, которая является результатом фильтрации хранилища, этот фильтр всегда будет применяться при обновлении сетки, сортировке и т. д. Вы это имеете в виду? - person Ken Franqueiro; 09.12.2014