0

私は道場の初心者で、道場コードを使用して出力をコンソールに出力しようとしています。しかし、次のコードの問題がわかりません。出力をコンソールに出力するにはどうすればよいですか?

<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>
4

2 に答える 2

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

于 2012-05-05T08:47:24.020 に答える
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。各定義内の返された宣言の definedClass がファイル階層と一致することを確認する必要があります。

そうは言っても、定義が機能しない理由は上記の説明です。インラインでありsrc、declaratedClass 名を推測する必要はありません。コードを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");
});
于 2012-05-05T08:31:42.963 に答える