2013-05-20 83 views
0

我是新來的道場。我試圖設置一個示例Dojo頁面,但Dojo組件未加載。相反,我得到以下錯誤DOJO dojo的新手無法加載

ReferenceError: dojo is not defined
dojo.require("dijit.form.Dialog");

但CSS被應用,class =「dijitHidden」隱藏DIV。

下面是我的HTML:

<!DOCTYPE html> 
<html> 
<head> 
<link rel="stylesheet" type="text/css" href="dijit/themes/tundra/tundra.css" /> 
<link rel="stylesheet" type="text/css" href="dojox/grid/resources/Grid.css"> 
<link rel="stylesheet" type="text/css" href="dojox/grid/resources/tundraGrid.css"> 
<script language="text/javascript" src="dojo/dojo.js" ></script> 
<script> 
    dojoConfig = { 
     isDebug: true, 
     parseOnLoad: true, 
     async: true 
     //foo: "bar" 
    }; 
</script> 
<script> 
    dojo.require("dojo.Dialog"); 
    function showDialog(){ 
     dijit.byId("terms").show(); 
    } 
    function hideDialog(){ 
    dijit.byId("terms").hide(); 
    } 
</script> 
    <meta charset="utf-8"> 
    <title> Hello Dojo</title> 
</head> 
<body> 
<h1> Welcome to Dojo</h1> 
<div id="contentDiv"> 
    <button onclick="showDialog()" > view terms and conditions</button> 
    <div class="dijitHidden"> 
     <div data-dojo-type="digit.Dialog" style="widht:600px" data-dojo-props="title:'terms and conditions'" id="terms"> 
      Digit Dialog Box Appears 
      <button onclick="hideDialog();"> I Agree</button> 
     </div> 
    </div> 
</div> 
</body> 
</html> 
+0

CSS和JavaScript是分開的。僅僅因爲CSS加載正確,並且類控制着元素的顯示,並不意味着JavaScript已經加載了。我猜想dojo.js文件的路徑不正確,並且它不在位於與HTML頁面相同的目錄中的名爲dojo的目錄中。 –

+3

dojo在使用'async:true'時被定義了嗎?我以爲你只有'需要',你必須通過那個拉你需要的東西... –

+1

我不知道這是否重要,但我包括道場配置後dojo.js – Mike

回答

0

的評論也已經回答了,dojoConfig被定義爲時已晚。此外,您還需要使用要求:

require(["dijit/form/Dialog"], function (formDialog) {...});

+0

那麼,如果他使用AMD。取決於什麼版本的Dojo – tik27

+0

,否則dojo會存在(他確認dojo.js加載) –

0

我假設你正在使用的Dojo 1.6或一些版本不支持AMD。 代碼看起來不錯,也許你需要改變語言=「文/ JavaScript的」爲type =「文/ JavaScript的」,或者你可以調試與非常下一行:

console.log(dojo); 
alert("Wait"); 

,並檢查是否道場越來越正確加載。

我還建議檢查CDN dojo庫版本,如果現在沒有任何工作。

<script src="//ajax.googleapis.com/ajax/libs/dojo/1.6.3/dojo/dojo.xd.js"></script> 
0

dojoConfig必須在渲染dojo.js文件之前出現。

您的編碼風格顯示dojo < 1.7。因此,請使用djConfig而不是dojoConfig。

您在data-dojo-type =「dijit.Dialog」出錯了