在Dojo中加载模块变量?

时间:2012-02-17 05:52:13

标签: dojo

我是dojo的新手,无法弄清楚为什么会发生这种情况

在dojo.html中

require(["dojo/query", "dojo/NodeList-dom", "dojo/domReady!", "a" ], function(query, a) {
            query("#greeting").style("color", "red");
            alert(a.sheep);
        });
a.js中的

define([], function() {
var a = {
    "sheep": "blah",
}
return a;
});

要求和加载模块a很好,但是当我尝试提醒a.sheep时,我得到了未定义。 注意:我也尝试过宣告羊:“等等”并尝试将羊换成警报功能并运行a.sheep;哪个有效。

1 个答案:

答案 0 :(得分:2)

您无法访问a.sheep的原因是dojo/NodeList-dom变量中有a个模块。 define/require数组中元素的顺序绑定到后续function中的参数列表。所以你应该写:

require(["dojo/query", "a", "dojo/NodeList-dom", "dojo/domReady!"], function(query, a) {

})

同样从实际的角度来看,我碰巧将代码格式化为:

define([
    "dojo/_base/declare",
    "dojo/query",

    "a",

    "dojo/NodeList-dom",
    "dojo/domReady!"
],
function(
    declare
    query,

    a
){

return declare(null, {

    constructor: function() {}

});
});

每个模块都在他自己的行上,加上通过空行对模块进行逻辑聚类。