2

Spring roo にdojo/domライブラリを含めて使用する方法を教えてください。

これ:

 <script type="text/javascript">
                      dojo.require('dojo/dom');
                      dojo.ready(function remAttr(){
                          dojo.removeAttr('theId', 'value');
                        }
                     );
</script>

結果:

"NetworkError: 404 Introuvable - http://localhost:8131/suivitrc/resources/dojo/dom.js"
dom.js
Could not load 'dojo/dom'; last tried '../dojo/dom.js'

誰でも助けてもらえますか?

4

3 に答える 3

2

名前空間 => モジュール パスへのパスは、ピリオド (.) を置き換えることで取得されます。つまり、スラッシュをドットに置き換える必要があります。あなたの要求は

  dojo.require('dojo.dom'); // blocking call? djConfig.async must be false

エラーは dojo.require で指定されたパスに関するものであるため、これは dojo.js が検出されてロードされたことを意味します (dojo.require は未定義ではありません)。baseUrl は dojo モジュールには関係ありません。

問題は、レガシー ローダーを使用して AMD モジュールを取り込むことです。1.7 以降では、require ステートメントの外観が異なります。

  // AMD loader form is
  function callbackFunctionOnComplete(dojoDom) { }
  require([ "dojo/dom" ], callbackFunctionOnComplete); // non-blocking

したがって、どのようにdojo.require機能するかは次のとおりです。文字列として渡すパラメーターが「モジュール」と呼ばれると仮定します。

dojo.require = function(module) {
   var parts = module.split('.');

1 - トップレベルのネームスペースを取得 (グローバル)

   var packageName = parts.shift(); // first part is the package name

2 - ファイル名を取得します (マイナス .js)

   var id = parts.pop(); // the last bit

3 - 間のすべてをパスに変換します (packagelocation を基準に)

   var mid = parts.join("/");

4 - 検索パッケージ (トップレベルから) の場所

   var fullpath = // in pseudo
       foreach dojoconfig.packages 
         iff obj.name == packageName 
            set to obj.location

5 残りを追加し、モジュールのダウンロードを開始します

   fullpath += mid + id + '.js'
   transport.get(..... fullpath .....)
于 2012-07-28T17:43:34.887 に答える
2

roo の dojo のバージョンは現在 1.7 未満だと思います。これは、remoteAttr 関数が dojo.js の一部であるため、コードから次の行を削除できることを意味します。

dojo.require('dojo/dom');

ここを参照してください: http://dojotoolkit.org/reference-guide/1.7/dojo/removeAttr.html

于 2012-07-28T03:38:36.817 に答える
1

dojo config で dojo を構成する必要があります。ここで説明されている形式を好みます。

http://dojotoolkit.org/reference-guide/1.7/dojo/_base/config.html#explicitly-creating-a-dojoconfig-object-before-include-the-dojo-core

そして、dojo にその内容を見つける場所を伝える必要があります。例:

 var dojoConfig =
  {
     baseUrl : "/yourApp/js",  // defines the js folder in your webapp
     tlmSiblingOfDojo: false,
     async: true,
     parseOnLoad:true,
     packages: [
        { name: "app", location: "app"}, // where it is in the js folder

        { name: "dojo", location: "lib/dojo" }, // where it is in the js folder
        { name: "dijit", location: "lib/dijit" },
        { name: "dojox", location: "lib/dojox" }
     ]
  };

また、使用しているrequireフォームは非推奨です。http://livedocs.dojotoolkit.org/dojo/requireを参照してください

于 2012-07-28T11:17:24.427 に答える