我是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 :(得分: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
之后才会被执行。
答案 1 :(得分:1)
你不能define
内联脚本代码,这是一个类定义,放在类文件的最顶行,这意味着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
的新模块。您应该确保每个define中返回的declare的declaredClass与文件层次结构匹配。
话虽如此,定义不适合你的原因是上面的解释。它是内联的,没有src
来猜测来自的declaredClass名称。将代码重写为 define(“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");
});