dojo小部件的初始化

时间:2010-12-20 16:28:28

标签: javascript dojo

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

我自己的脚本位于localhost上。所以当我在页面上的dojo初始化我的脚本出错了。我找不到关于道场的任何好消息,也许我在错误的地方搜索? 请帮我解决我的问题

3 个答案:

答案 0 :(得分:3)

当我试图覆盖dijit.Dialog时,我碰到了这个,所以我可以将事件绑定到其中的控件。我们还没有看到绑定部分是否有效,但是如果你看一下源代码,当第二个参数传入的其中一个基数无法解析为“[Object function]”时会发生这种情况。就我而言,我正在传递一个字符串。

dojo.declare有3个参数:

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

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

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

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

强烈建议使用Web Inspector或Firebug以及Dojo库的未压缩本地副本而不是CDN来弄清楚发生了什么并调试这些类型的问题。 Dojo的文档很广泛,但在某些方面并不完整,必须通过查看代码所期望的内容来弄清楚一些行为。这对作者来说并不是一个小小的意思;一旦你了解它,它是一个非常棒的产品,并且赞赏志愿者工作的任何文档。

答案 1 :(得分:0)

你确定Dojo正在加载吗?你把代码放在dojo.addOnLoad()中了吗?使用CDN时,有时会遇到执行时间问题。 dojo.addOnLoad()不仅会在加载DOM时触发,而是在下载dojo资源时调用它,例如dijit._Widget。

答案 2 :(得分:0)

当我搞砸了我的要求的顺序时,我遇到了这个问题,这使得_WidgetBase不是_WidgetBase的真正含义。看起来像一个简单的地方搞砸了。