これは欠陥ですが、そうではありません。childAttrs の 1 つである場合を除き、配列として値を使用できないため、JSON の構成は正しくありません。[1,2,3].toString() の性質上、値を配列として設定しようとする試みが有効と見なされる理由です。
ItemFileReadStore の get/set は、その項目を次のように処理します。
store._arrayOfAllItems = {
value1 : { values : [ 'realvalue' ] },
value2 : { values : [ 'realvalue' ] }
};
ゲッターは言う
store.get = function(itemById, val) { return itemById[val][0]; }
// why only the first arrayslot is pulled from store---/^
JSON コンストラクトで、次のような値を設定できない理由は何ですか?
var data = {
id: 'id',
label: 'id',
items: [
{
id: "value1",
values: "a,b,c" // permit-able string value
},
{
id: "value2",
values: "foo"}
]
};
1 つの ID の同じキーで複数の値が必要な場合は、データを子として配信し、そのように処理する必要があります。
data: {
id: 'id',
label: 'id',
childrenAttrs: [ 'items', 'children'], // << default behavior
items: [ {
id: "value1",
children: [
{ id: "value1_1", values: 'a' },
{ id: "value1_2", values: 'b' },
{ id: "value1_3", values: 'c' }
]
}, {
id: "value2",
values: "foo"
} ]
}
ただし、複数レベルのデータストアを使用できるのは dojox.grid.TreeGrid のみです。