我使用樹作爲dijit.tree.ForestStoreModel
作爲模型,JsonRestStore
作爲商店。如何將項目添加到JsonRestStore本地存儲?
它在樹初始化時工作正常。之後,我想手動(而不是從服務器)添加另一個項目到商店來更新樹。
我的問題是我怎樣才能做到這一點,沒有發佈到服務器休息,只是本地存儲。我用store.newItem()
但沒有成功。
我使用樹作爲dijit.tree.ForestStoreModel
作爲模型,JsonRestStore
作爲商店。如何將項目添加到JsonRestStore本地存儲?
它在樹初始化時工作正常。之後,我想手動(而不是從服務器)添加另一個項目到商店來更新樹。
我的問題是我怎樣才能做到這一點,沒有發佈到服務器休息,只是本地存儲。我用store.newItem()
但沒有成功。
最後我能弄清楚是什麼激發了對服務器的請求。那是jsonRestStore.save()
,它向服務器提交髒數據。 我已經從我的代碼刪除它後,我用下面的新數據添加到樹:
jsonRestStore.fetchItemByIdentity({
identity: parent.path,
onItem: function (parent) {
store_cloud.newItem(child, {
parent: parent,
attribute: 'children'
});
}
});
在這裏,我有一個子節點和父之一。另外'children'屬性用於引用。
我想在這種情況下,你可能不想實際使用JsonRestStore。根據您的使用情況,您可能需要使用其他類型的dojo商店,如Memory以及初始化您的樹,通過其他方法從您的服務器加載數據。
感謝您的回答,我不得不使用'JsonRestStore'來延遲加載,但我還需要找到一種方法將節點添加到其他xhr請求加載的樹中。我不知道如何使用延遲加載的樹節點的內存。 – androberz
這是一個艱難的,我不太確定。我會考慮的是覆蓋備份樹的StoreModel中的newItem函數(默認爲ForestStoreModel),並且可能會重寫onNewItem函數。 newItem函數應該是樹的StoreModel寫入存儲的位置,因此它在代碼中可以阻止POST發生。 – Richard