无法在dojo中将输出打印到控制台

时间:2012-05-05 07:11:31

标签: 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>

2 个答案:

答案 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");
});