【问题标题】:Dijit combobox not rendering in custom widgetDijit 组合框未在自定义小部件中呈现
【发布时间】:2009-07-15 14:38:46
【问题描述】:

我正在尝试在定制小部件中使用 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");

我还尝试将这些包含在自定义小部件中的 中(类似于他们在教程中的操作方式),但它不起作用(实际上,它看起来好像脚本标记' 甚至没有评估,因为我无法引用我在其中声明的函数!)

【问题讨论】:

    标签: dojo


    【解决方案1】:

    您的小部件声明中是否包含widgetsInTemplate

      dojo.declare('my.widget.Cool',[ dijit._Widget, dijit._Templated ], {
    
          widgetsInTemplate: true,
    
          // rest of widget JS here
    
       });
    

    这里是an article,关于在您的模板中包含其他小部件。

    【讨论】:

    • 不客气。我总是犯这个错误。很高兴它成功了。
    • @Phix:谢谢,很高兴这个答案在将近 3 年后仍然很强大。
    【解决方案2】:

    您是否尝试过添加:

    <script type="text/javascript">
        dojo.require("dojo.parser");
        dojo.addOnLoad(function(){
            dojo.parser.parse();
        });
    </script>
    

    (来自Dojocampus)以确保Dojo 正在解析页面?您的 Javascript 控制台中是否有任何错误?页面是否呈现任何正常的 Dojo 小部件?

    【讨论】:

    • 我尝试添加该代码,但没有骰子。使用我的自定义小部件的主页在加载时执行解析,所以我猜这应该不是问题。我的 Javascript 控制台中没有错误。页面中的所有 Dojo 小部件都呈现正常,但我的自定义小部件中没有任何其他 Dojo 小部件。另外,我的自定义小部件在对话框中使用......不确定这是否会影响事情。
    猜你喜欢
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    相关资源
    最近更新 更多