Dgrid 0.4 и dstore: обновить строку в интерфейсе без запроса на ввод
В Dgrid 0.3.16 я использовал хранилище Observable, и когда мои данные в хранилище были изменены, я вызвал функцию уведомления магазина. (не "ставить", потому что мне нужно только обновление пользовательского интерфейса, это особый случай)
store.notify(object, existingId);
Сейчас я обновил Dgrid до версии 0.4 и в качестве хранилища я использую "dstore". Магазин создан так:
var store = new declare([ Rest, SimpleQuery, Trackable, Cache, TreeStore ])(lang.mixin({
target:"/ac/api?fetchview",
idProperty:"$uniqueid",
useRangeHeaders: true
}, config));
store.getRootCollection = function (parent, options) {
return this.root.filter({parent: parent.$position},options);
};
store.getChildren = function (parent, options) {
return this.root.filter({parent: parent.$position},options);
};
store.mayHaveChildren = function (item) {
return item.$iscategory;
};
this.collection = store;
Как я могу уведомить магазин, когда одна строка изменяется без вызова "put"? Мне нужен dGrid для повторного рендеринга строки.
1 ответ
dstore следует модели, более похожей на типичные подходы, основанные на событиях, с on
а также emit
методы. dstore поддерживает add
, update
а также delete
события - первые два ожидают объект с target
свойство, ссылающееся на элемент; delete
событие ожидает объект с id
свойство, ссылающееся на личность предмета.
Таким образом, чтобы уведомить об обновленном элементе, позвоните store.emit('update', { target: updatedItem })
,
emit
Метод описан в разделе Методы хранилища, а типы событий далее перечислены в документации Коллекции.