2012-05-05 61 views
0

我是dojo的初學者,我試圖使用dojo代碼將輸出打印到控制檯。但是,我不知道下面的代碼有什麼問題,我怎樣才能將輸出打印到控制檯?無法將輸出打印到dojo中的控制檯

<html> 
<head> 
<script type = "text/javascript" src = "dojo/dojo.js" data-dojo-config = "async: true, isDebug : true" > 
</script> 
</head> 
<body> 
<h1 id = "greeting">Hello</h1> 
<script> 
define(["dojo/dom"],function(dom) { 
var Twitter = declare(null, {username:"defaultusername", 
    say :function(msg) 
    { 
     console.log("Hello "+msg); 
    } 
}); 
var myInstance = new Twitter(); 
myInstance.say("Dojo"); 
}); 
</script> 
</body> 
</html> 
+0

您使用哪個瀏覽器? – phusick

+0

我使用的是Firefox,但即使在Chrome瀏覽器中也無法輸出輸出 – Stardust

+0

考慮這個小提琴http://jsfiddle.net/seeds/AgvFs/ – mschr

回答

3

使用require而不是define

<script> 
require(["dojo/dom", "dojo/_base/declare"], function(dom, declare) { 

    var Twitter = declare(null, { 

     username: "defaultusername", 

     say :function(msg) { 
      console.log("Hello "+msg); 
     } 
    }); 

    var myInstance = new Twitter(); 
    myInstance.say("Dojo"); 
}); 
</script> 

Console的作品,但沒有被執行你的declare代碼回調函數內直到您require

+0

感謝它現在可以在所有瀏覽器中工作。 – Stardust

1

可以在內嵌腳本代碼不define,即意味着是一個類定義,放在一個類文件的最頂部,這意味着定義文件名,它的功能的返回值映射。

這意味着,如果你有

dojo_toolkit/
    dojo/ 
    dijit/ 
    dojox/ 
    libs/ 
    myWidgets/ 
     foo.js 

而且foo.js讀取

define(["dijit._Widget"], function(adijit) { 
    return declare("libs.myWidgets.foo", [adijit], function() { 
    say: function(msg) { console.log(msg); } 
    }); 
}); 

然後一個新的模塊被註冊,稱爲libs/myWidgets/foo。您應該確保每個定義中返回的declare的declaredClass與文件hierachy匹配。

也就是說,定義之所以不適合你是上面的解釋。它是內聯的,並且沒有src來猜測宣告的類名。重寫你的代碼來定義( 「aTwitterLogger」,[」

define("aTwitterLogger", ["dojo/_base/declare", "dojo/dom"],function(declare, dom) { 
    var Twitter = declare(null, { 
     username:"defaultusername", 
     say :function(msg) 
     { 
      console.log("Hello "+msg); 
     } 
    }); 
    var myInstance = new Twitter(); 
    myInstance.say("Dojo"); 
});