【问题标题】:initialization of dojo widgetdojo 小部件的初始化
【发布时间】:2010-12-20 16:28:27
【问题描述】:

我尝试为我的网站创建自定义小部件。当我加载页面时,它说: mixin #0 不是可调用的构造函数。 clsInfo.cls.prototype 未定义 我找不到任何关于 clsInfo 的信息,所以我不知道它是什么。也许是我使用 google 的 dojo 的问题:

我自己的脚本位于本地主机上。因此,当我在页面上的 dojo 初始化时,我的脚本出现了问题。我在dojo上找不到任何好的信息,也许我搜索错了地方? 请帮我解决我的问题

【问题讨论】:

  • 请为您的小部件发布(至少部分)您的 dojo.declare 声明。很少有人会通过这几条信息猜出您的问题。

标签: javascript dojo


【解决方案1】:

我在尝试覆盖 dijit.Dialog 时遇到了这个问题,因此我可以将事件绑定到其中的控件。我们还没有看到绑定部分是否可以工作,但是如果你查看源代码,当作为第二个参数传入的其中一个基无法解析为“[对象函数]”时,就会发生这种情况。就我而言,我传递了一个字符串。

dojo.declare 接受 3 个参数:

  • 您正在构建的自定义对象“类”的名称
  • 一组基类,父类提供功能(不是这些类的字符串名称)
  • 函数和声明的散列

所以如果我想覆盖 dijit.Dialog,我必须这样做:

dojo.declare("myDialogType", [dijit.Dialog], {
    function1() {/*Code*/},
    function2() {/*Code*/}
}

我将 ["dijit.Dialog"] 作为我的第二个参数,这就是问题所在。

强烈建议将 Web Inspector 或 Firebug 与 Dojo 库的未压缩本地副本一起使用,而不是使用 CDN 来找出正在发生的事情并调试这些类型的问题。 Dojo 的文档很广泛,但在某些领域并不完整,并且必须通过查看代码的预期来弄清楚某些行为。这并不是对作者的轻视。一旦你开始使用它,它就是一个非常棒的产品,任何关于志愿者工作的文档都会受到赞赏。

【讨论】:

    【解决方案2】:

    您确定 Dojo 正在加载吗?您是否将代码放入 dojo.addOnLoad() 中?使用 CDN 时,您有时会遇到执行时间问题。 dojo.addOnLoad() 不仅会在加载 DOM 时触发,还会在 dojo 资源下载完成时调用,例如 dijit._Widget。

    【讨论】:

      【解决方案3】:

      当我搞砸了我的要求顺序时遇到了这个问题,这使得_WidgetBase 不是_WidgetBase 的真正含义。看起来很容易搞砸。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多