我为dojo组合框创建了dojo div元素。现在我想创建一个类似树的结构来选择下拉值。我想使用读取或写入存储(dojo / data / ItemFileReadStore)通过java脚本文件在div元素中附加树对象.....
我正在尝试下面的html和js文件,但我收到以下错误消息。 没有这样的方法dom.byId
组合框的div元素:
<div>
<tr>
<td><label for="fixedSubCategory">Fixed SubCategory</label></td>
<td><select data-dojo-type="dijit/form/ComboBox"
id="fixedSubCategory" name="fixedSubCategory" value="">
</select></td>
</tr>
附加树对象的JS文件:
var displayData ={
"identifier":"id",
"label":"name",
"items":[
{
"type": "parent",
"name": "Countries",
"id": "countries",
"children":[
{"type":"Leaf", "name":"Country 1", "id":"country1"},
{"type":"Leaf", "name":"Country 2", "id":"country2"},
{"type":"Leaf", "name":"Country 3", "id":"country3"},
{"type":"Leaf", "name":"Country 4", "id":"country4"},
{"type":"Leaf", "name":"Country 5", "id":"country5"},
{"type":"Leaf", "name":"Country 6", "id":"country6"}
]
}]}
var store1 = new dojo.data.ItemFileReadStore({ data: displayData });
var treeModel = new dijit.tree.ForestStoreModel({
store: store1,
query: {"type": "parent"},
rootId: "root",
rootLabel: "Groups",
childrenAttrs: ["children"]
});
var treeObject = new dijit.Tree({
model: treeModel
}, "treeDiv")
if (dijit.byId("fixedSubCategory") != null) {
dom.byId("fixedSubCategory").appendChild(treeObject.domNode);
treeObject.startup();
}
答案 0 :(得分:0)
通常,dom.byId()
等可以在适当的AMD模块的上下文中看到,例如:
define([ 'dojo/dom', ... ], function (dom, ...) {
// do something with dom.byId
});
如果您正在编写AMD格式的模块(非常鼓励这样做),请确保实际将dojo/dom
模块包含在依赖项列表中,并将模块分配给工厂中的dom
参数函数(如果您认为已经在执行此操作,请确保依赖项数组和函数参数顺序匹配)。然后它应该工作正常。
(此外,引用dijit.byId
的适当方式是通过dijit/registry
模块,而不是dijit
全局模块。)
另一方面,看起来你的大多数其他代码都没有真正使用AMD格式(例如dojo.data
,dijit.tree
等)。虽然建议更新为AMD格式(好像你曾在Populating ComboBox dynamically in dojo中使用domAttr
),但非AMD,全球等同于dom.byId
是dojo.byId
。
答案 1 :(得分:0)
最简单的方法是使用组合框,我想。
我们这样管理: “结果”是对我们的街形文件进行查询的结果。
function streetsToCombobox(results){
var adress;
var values = [];
var testVals={};
var features = results.features;
require(["dojo/_base/array","dojo/store/Memory","dijit/form/ComboBox"],
function(array,Memory,Combobox){
if (!features[0]) {
alert(noDataFound);
}
else {
array.forEach(features, function(feature, i){
adress = feature.attributes.STRASSE;
//Check for doublefeatures
if (!testVals[adress]) {
testVals[adress] = true;
values.push({
name: adress
});
}
});
values.sort(SortByName);
var dataItems = {
identifier: 'name',
label: 'name',
items: values
};
storeStreet = new Memory({
data: dataItems
});
}
var comboBox = new ComboBox({
id: "MyCB",
name: "street",
value: "",
store: storeStreet ,
searchAttr: "name"
},"DomeNodeForBox");
});
}
对于所有进一步的信息,请仔细查看文档:{{3}}