[英]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('.');
var packageName = parts.shift(); // first part is the package name
var id = parts.pop(); // the last bit
var mid = parts.join("/");
var fullpath = // in pseudo
foreach dojoconfig.packages
iff obj.name == packageName
set to obj.location
fullpath += mid + id + '.js'
transport.get(..... fullpath .....)
您需要使用dojo config配置dojo。 我更喜歡這里解釋的形式:
而且您需要告訴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.