1

独自の自己定義関数を必要とすることに問題があります。私のtest.htmlには、次のように書いています。

require(["dojo/query", "new"], function(query, New) {New();});

New は、dojo フォルダーと同じ場所にある new.js ファイルです。new.js に次のように書きました。

define(["dojo/dom"], function(dom){return dom.byId("d1")});

この場合、必要なときに New 関数を呼び出すことができます。

しかし、new.js の場所を変更すると、"new" を再度要求すると、dojo ローダー エラーが発生します。

new.jsの場所を変えると、test.htmlはどう書けばいいですか?お気に入り:

require(["dojo/query", "../new"], function(query, New) {...});

これはうまくいきませんでした。

dojoフォルダーと同じ場所にない自己定義のjsファイルを要求する方法を誰かが知っていますか?

ありがとう...

4

1 に答える 1

0

私はこのような問題を解決しました。

最初に、次のように dojo を含めます<head>

<script type="text/javascript"
src="https://myserver.com/dojo/1.7.2/dojo/dojo.js"></script>

dojo が require で見つかるようになりました。わかりやすいように、dojo のディレクトリ リストは次のようになります。

https://myserver.com/dojo/1.7.2/

ここに画像の説明を入力

また、CDN から dojo を使用することもできます。


次に、すべての JavaScript をフォルダーに入れています/js。ときはrequire、このようにフォルダ名を含めます"js/MyGrid.js"jsサーバー上のプロジェクトのルートにデプロイされます。今、私はこれをrequire好きにすることができます:

require([ "dojo", "dijit/Dialog", "dojo/parser", "dojo/_base/lang",
  "dojo/query", "dojo/dom-class", "js/MyGrid.js", "js/MyUploader.js",
  "dijit/form/TextBox", "dijit/form/Textarea", "js/MyJsonHelper.js",
  "dijit/form/SimpleTextarea", "dojox/form/BusyButton", "dojo/dom-attr",
  "dijit/form/Select", "dijit/ProgressBar", "js/MyArray.js", 
  "dojo/domReady!" ], 
  function(dojo, Dialog, parser, lang, query, domClass) {

PS:これをベスト プラクティスとして推奨しているわけではありません。それは私のために働いた。次のように設定するなど、他の方法があることは知っていますdata-dojo-config

var dojoConfig = {
    packages: [
        { name: "my", location: "js", main: "app" }
    ]
};

http://dojotoolkit.org/documentation/tutorials/1.7/modules/

于 2013-04-12T01:12:08.650 に答える