2010-12-20 247 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真的是。看起來像一個簡單的地方搞砸了。