#json #dojo
#json #dojo
Вопрос:
Я пытаюсь установить для своего источника данных dijit Select хранилище данных в формате json, но в моем раскрывающемся списке отображаются только поля, а не текст из хранилища данных. Хранилище данных извлекается из базы данных и имеет формат:
{
"GetReachesResult":[
{
"reach":"CRC"
},
{
"reach":"IV"
},
{
"reach":"IVA"
},
{
"reach":"IVB"
},
{
"reach":"IVD"
},
{
"reach":"IVE"
},
{
"reach":"V"
}
]
}
модуль кода, который пытается установить хранилище для выпадающего списка,:
define(['dojo/store/Memory', 'dojo/_base/xhr', "dojo/data/ObjectStore"],
//functions to get data and fill data stores
function (Memory, xhr, ObjectStore) {
return {
GetReaches: function (url) {
xhr.get({//get data from database
url: url,
//url: url,
handleAs: "json",
load: function (result) {
var ReachData = result.GetReachesResu< //GetReachesResult is default reach of GetReaches Method
var ReachStore = new Memory({ data: ReachData });
var oReachStore = new ObjectStore({ objectStore: ReachStore });
DD.setStore(oReachStore);
},
error: function (err) { }
});
} //GetReaches
}
});
Вызов модуля с главной страницы:
....
DD = new Select({
style: { width: '250px' }
}, "DropDownDiv");
DD.startup();
var myButton = new Button({
label: "Get Data",
onClick: function () {
Data.GetReaches(dataServiceUrl);
}
}, "ButtonDiv");
});
Есть идеи? Спасибо
Ответ №1:
Я заметил, что вы исправили свою ошибку, изменив reach
свойство на label
. Однако вы можете настроить свойство, используемое для метки, используя labelAttr
свойство, например:
DD = new Select({
style: { width: '250px' },
labelAttr: 'reach'
}, "DropDownDiv");
Это также должно работать нормально, как вы можете видеть в этом JSFiddle: http://jsfiddle.net/5JKx6 /
Лучший способ изучить эти свойства — взглянуть на документацию API.
Ответ №2:
Проблема заключалась в моих данных json — для выбора для отображения данных мне нужно было изменить имя атрибута объекта с «reach» на «label». Я предполагаю, что Select отображает только атрибуты с меткой name