2

所以我可以看到文件已从 dojoConfig 参考正确加载,但是,当我尝试使用该模块时,它的“未定义”任何建议:

更新:这将加载文件,但是当我将变量放入控制台时,什么也没有出现。检查它时,我看到很多文本,而不是我放在里面的 obj 数组。

索引.html:

<script>
   dojoConfig = {
     tlmSiblingOfDojo: true,
     async: true,
     parseOnLoad: false,
     packages: [
                { name: "main", location: "/components/3.6compact/js/dojo/dojo/main"},
                { name: "jquery", location: "/scripts/libs", main: "jquery"},
                {name: "jam", location: "/scripts/mylibs", main: "lod"}
            ]
        };
    </script>
    <script src="/components/3.6compact/js/dojo/dojo/dojo.js"></script>
    <script src="/scripts/app.js"></script>

lod.js:

define([], function(){
  var lod = [{
    'level': 0,
    'resolution': 156543.033928,
    'scale': 591657527.591555
}, {
    'level': 1,
    'resolution': 78271.5169639999,
    'scale': 295828763.795777
}
 ];
 return lod;
 });

应用程序.js: *

require(['jam'], function(jam){
  console.log(lod);
});
4

1 回答 1

2

很难提供像 jsfiddle 这样的示例,我们无法通过文件路径指定资源,但我认为问题出在 javascript 中的模块 ID 上。在您的dojoConfig中,该属性定义了该包中模块所在目录location的路径。

如果您的lod模块位于 in /scripts/mylibs/lod.js,那么您需要 require lod/lod

require(['lod/lod'], function(lod) {
    console.log("lod module:", lod);
});

这是 dojo config 的文档。我会看一下“加载程序配置”部分。

无论如何,我尝试了一个 jsfiddle,这可能很有用:http: //jsfiddle.net/tupton/ftN6h/

注意控制台中的错误:

“洛德”:

GET http://fiddle.jshell.net/scripts/mylibs/LOD.js 404 (Not Found)

和“lod/lod”:

GET http://fiddle.jshell.net/scripts/mylibs/lod.js 404 (Not Found)

我不熟悉包配置的“主要”属性,但是当您尝试需要整个包时,它看起来就是这样。也许尝试将其更改为“lod”以便查找“.../lod.js”?

于 2013-09-19T18:55:27.680 回答