我正在尝试使用Dijit在定制小部件中提供的组合框。我一直在使用Dojo's tutorial on comboboxes来指导我。
当我实现类似于他们的教程示例的独立网页时,一切正常;但是当我将代码移植到我自定义的小部件中时,它只是将组合框渲染为纯HTML文本框。
这是我的自定义小部件模板的样子:
<div class='customWidget'>
...
<div dojoAttachPoint="mainDiv" class="mainDiv">
<div dojoType="dojo.data.ItemFileReadStore" jsId="stateStore" url="states.txt"></div>
<input dojoType="dijit.form.ComboBox"
store="stateStore"
value="California"
searchAttr="name"
name="state2" />
<button dojoAttachEvent="onclick:chooseState">OK</button>
</div>
...
</div>
在小部件代码中,我需要组合框和读取存储:
dojo.require("dijit.form.ComboBox");
dojo.require("dojo.data.ItemFileReadStore");
我还尝试将这些包含放在&lt; script /&gt;中在自定义小部件中(类似于他们在教程中的方式),但它不起作用(实际上,看起来好像甚至没有评估脚本标记,因为我无法引用我声明的函数在里面!)
答案 0 :(得分:4)
你的小部件声明中有widgetsInTemplate
吗?
dojo.declare('my.widget.Cool',[ dijit._Widget, dijit._Templated ], {
widgetsInTemplate: true,
// rest of widget JS here
});
以下是关于在模板中包含其他小部件的an article。
答案 1 :(得分:0)
您是否尝试过添加:
<script type="text/javascript">
dojo.require("dojo.parser");
dojo.addOnLoad(function(){
dojo.parser.parse();
});
</script>
(来自Dojocampus)确保Dojo正在解析页面?您的Javascript控制台中是否有任何错误?页面是否呈现任何正常的Dojo小部件?