带有自定义包路径的dojo 1.9配置

时间:2013-09-19 18:08:20

标签: javascript dojo require amd

所以我可以看到该文件是从dojoConfig引用中正确加载的,但是当我尝试使用该模块时,它的'undefined'有任何建议:

更新:这将加载文件,但是当我将变量放入控制台时,没有任何结果。在检查它时,我看到很多文本而不是我放在里面的objs数组。

的index.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;
 });

app.js: *

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

1 个答案:

答案 0 :(得分:2)

很难提供像jsfiddle这样的例子,我们不能通过文件路径指定资源,但我认为问题在于你的javascript中的模块id。在dojoConfig中,location属性定义了目录的路径,其中可以找到该程序包中的模块。

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

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

Here's the documentation for dojo config。我会看一下“Loader Configuration”部分。

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

请注意控制台中的错误:

'LOD':

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)

我不熟悉软件包配置的“main”属性,但它看起来就像是在尝试需要整个软件包时所使用的属性。也许尝试将其更改为“lod”,以便查找“... / lod.js”?