我正在尝试将我的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.GetReachesResult; //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");
});
有什么想法吗?感谢
答案 0 :(得分:1)
问题是我的json数据 - 选择显示我需要将对象属性名称从'reach'更改为'label'所需的数据。我猜Select只显示名称标签为
的属性答案 1 :(得分:1)
我注意到您通过将reach
属性更改为label
来解决了您的错误。但是,您可以使用labelAttr
属性配置用于标签的属性,例如:
DD = new Select({
style: { width: '250px' },
labelAttr: 'reach'
}, "DropDownDiv");
这应该也可以正常工作,正如你在JSFiddle中看到的那样:http://jsfiddle.net/5JKx6/
了解这些属性的最佳方法是查看API documentation。