Dijit组合框无法在自定义小部件中呈现

时间:2009-07-15 14:38:47

标签: dojo

我正在尝试使用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;中在自定义小部件中(类似于他们在教程中的方式),但它不起作用(实际上,看起来好像甚至没有评估脚本标记,因为我无法引用我声明的函数在里面!)

2 个答案:

答案 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小部件?