2012-02-17 50 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() {} 

}); 
}); 

通過空行對自己的行每個模塊,加上模塊的邏輯集羣。