2012-02-17 68 views
1

我是新来的Dojo和想不通为什么会这样在Dojo中加载模块变量?

在dojo.html:

在a.js

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

要求和加载模块

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

很好,但是当我尝试提醒a.sheep时,我得到了不确定。 注意:我也尝试过申报羊:“blah”,并尝试将羊改为alert函数并运行a.sheep;哪些工作。

回答

2

您无法访问a.sheep的原因是a变量中有dojo/NodeList-dom模块。 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() {} 

}); 
}); 

通过空行对自己的行每个模块,加上模块的逻辑集群。