2015-05-19 2 views
0

Я использую дерево с dijit.tree.ForestStoreModel в качестве модели и JsonRestStore в качестве магазина.Как добавить элемент в локальное хранилище JsonRestStore?

Он отлично работает, когда дерево инициализировано. После этого я хочу добавить другой элемент в хранилище вручную (а не с сервера), чтобы обновить дерево.

Вопрос: как я могу это сделать, не отправляя товар на сервер по принципу отдыха, только на локальное хранилище. Я использовал store.newItem(), но безуспешно.

ответ

0

Наконец-то я смог выяснить, что вызвало запросы на сервер. Это было jsonRestStore.save(), которое фиксирует грязные данные на сервере. После того как я удалил его из моего кода, я использую следующий для добавления новых данных в дерево:

jsonRestStore.fetchItemByIdentity({ 
    identity: parent.path, 
    onItem: function (parent) { 
     store_cloud.newItem(child, { 
      parent: parent, 
      attribute: 'children' 
     }); 
    } 
}); 

Здесь у меня есть дочерний узел и родитель один. Также для привязки используется атрибут «children».

1

Я думаю, что в этой ситуации вы, вероятно, не захотели бы использовать JsonRestStore. В зависимости от вашего варианта использования вы можете использовать какой-либо другой тип хранилища доджо, например Memory, и при инициализации своего дерева загрузите данные с вашего сервера с помощью какого-либо другого метода.

+0

Спасибо за ваш ответ, я должен использовать 'JsonRestStore' для ленивой загрузки, но мне также нужно найти способ добавления узлов в дерево, загруженное другими запросами xhr. Я не знаю, как использовать память с ленивыми загруженными узлами дерева. – androberz

+1

Это непросто, что я не слишком уверен в этом. Я бы рассмотрел переопределение функции newItem в StoreModel, которая поддерживает дерево (по умолчанию - ForestStoreModel) и, возможно, может переписать функцию onNewItem. Функция newItem должна быть там, где StoreModel для дерева записывается в хранилище, поэтому он находится в том коде, где вы можете остановить POST. – Richard

Смежные вопросы