簡體   English   中英

包括Spring Roo的dojo / dom庫

[英]Including dojo/dom library to Spring Roo

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'

誰能幫忙嗎?

我認為roo中的dojo版本目前小於1.7。 這意味着您可以從代碼中刪除以下行,因為remoteAttr函數是dojo.js的一部分:

dojo.require('dojo/dom');

參見此處: http : //dojotoolkit.org/reference-guide/1.7/dojo/removeAttr.html

簡而言之,通過替換句點(。)可以獲取命名空間=>到模塊路徑的信息-簡而言之,您需要用點代替斜杠。 您的要求應該是

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

由於錯誤是關於dojo.require指定的路徑的,所以這意味着您的dojo.js已找到並已加載(dojo.require並非未定義)-並且doU模塊不關心baseUrl。

事實是,您使用舊版加載器插入AMD模塊,在1.7+中,require語句的外觀與此不同。

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

因此,遵循dojo.require工作原理,假設我們以字符串形式傳遞的參數稱為'module;

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 .....)

您需要使用dojo config配置dojo。 我更喜歡這里解釋的形式:

http://dojotoolkit.org/reference-guide/1.7/dojo/_base/config.html#explicitly-creating-a-dojoconfig-object-before-includes-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" }
     ]
  };

另外,您使用的需求表也已棄用。 參見http://livedocs.dojotoolkit.org/dojo/require

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM