2010-12-20 189 views
3

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

和我自己的脚本位于本地主机上。所以当我页面上的dojo初始化某些东西出错了我的脚本。我无法找到关于道场的任何好的信息,也许我在错误的地方搜索? 请帮我解决我的问题

+2

请发布(至少部分)您的小部件的dojo.declare声明。有人不太可能会用这几个信息来猜测你的问题。 – kioopi 2010-12-22 08:29:56

回答

0

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

3

我试图重写dijit.Dialog时遇到了这个问题,所以我可以将事件绑定到其中的控件。我们还没有看到绑定部分是否可以工作,但是如果你看看源代码,当第二个参数传入的基础之一未能解析为“[Object function]”时会发生这种情况。就我而言,我传递一个字符串

dojo.declare接受3个参数:

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

所以,如果我要重写DIJ it.Dialog,我必须做的:

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

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

强烈建议使用Web Inspector或Firebug与Dojo库的非压缩本地副本而不是CDN来弄清楚发生了什么并调试这些类型的问题。 Dojo的文档很广泛,但在某些领域并不完整,有些行为需要通过查看代码期望得到。这对作者来说不是轻微的;一旦你得到它是一个非常棒的产品,并且任何志愿者工作的文档都会被赞赏。

0

我遇到了这个问题,当我搞砸了我的要求,这使得_WidgetBase不是什么_WidgetBase真的是。看起来像一个简单的地方搞砸了。