我尝试为我的网站创建自定义小部件。我加载页面时说: mixin#0不是可调用的构造函数。 clsInfo.cls.prototype未定义 我找不到有关clsInfo的任何信息,所以我不知道它是什么。也许是我从谷歌使用dojo的问题:
我自己的脚本位于localhost上。所以当我在页面上的dojo初始化我的脚本出错了。我找不到关于道场的任何好消息,也许我在错误的地方搜索? 请帮我解决我的问题
答案 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
的真正含义。看起来像一个简单的地方搞砸了。