存在道場兩件式的數據存儲:
- dojo.data.ItemFileReadStore - 只讀數據存儲
dojo.data.ItemFileWriteStore - ItemFileReadStore的擴展,對dojo.data.api.Write
在增加你的情況下,你應該使用ItemFileWriteStore - 它提供了修改商店數據的功能。
如:
你國家的數組,要在過濾使用它選擇:
[{
abbr: 'ec',
name: 'Ecuador',
capital: 'Quito'
},
{
abbr: 'eg',
name: 'Egypt',
capital: 'Cairo'
},
{
abbr: 'et',
name: 'Ethiopia',
capital: 'Addis Ababa'
}]
首先,你需要創建ItemFileWriteStore數據存儲JS變量。
<script>
dojo.require("dojo.data.ItemFileWriteStore");
dojo.require("dijit.form.FilteringSelect");
var storeData = {
identifier: 'abbr',
label: 'name',
items: //YOUR COUTRIES ARRAY
}
</script>
下一步 - 申報HTML標記過濾選擇和itemFileWriteStore:
<div dojotype="dojo.data.ItemFileWriteStore" data="storeData" jsid="countryStore"></div>
<div dojotype="dijit.form.FilteringSelect" store="countryStore" searchattr="name" id="filtSelect"></div>
最後的附加創建特殊功能/刪除/修改過濾項目選擇:
添加新項:
function addItem() {
var usa = countryStore.newItem({ abbr: 'us', name: 'United States', capital: 'Washington DC' });
}
我希望這裏都清楚。僅小注:「標識符」字段(在我們的例子中爲「abbr」)在商店中必須是唯一的
刪除項目 - 例如名稱爲「美利堅合衆國」
function removeItem() {
var gotNames = function (items, request) {
for (var i = 0; i < items.length; i++) {
countryStore.deleteItem(items[i]);
}
}
countryStore.fetch({ query: { name: "United States of America" }, queryOptions: { ignoreCase: true }, onComplete: gotNames });
}
刪除所有項目正如你可以看到我已創建查詢時,發現與數據存儲名稱==「美利堅合衆國」的項目。查詢執行後,函數「gotNames」將被調用。 函數gotNames刪除所有查詢返回的項目。
而最後一個函數 - 編輯項目
它類似於刪除功能。只有一個區別:
你應該使用itemFileWriteStore的setValue()
方法改變項目屬性:
countryStore.setValue(item, "name", newValue);
Here - page with working example
荒謬。你會認爲你可以這樣做: dijit.byId('element')。store.load([鍵值對數組] – 2012-02-16 18:22:41