2013-03-15 29 views
0

我只是想知道,这只是一个普遍的问题,是搔痒我的大脑。上面的Dojo 1.7使用AMD模块,这是调用小部件和帮助类的好方法。Dojo请求一个AMD模块并回拨

问题以正常的方式来调用与调用类或AMD模块背部看起来象下面这样:

require(['dojo/_base/lang', 'dojox/grid/DataGrid', 'dojo/data/ItemFileWriteStore', 'dojo/dom', 'dojo/domReady!'], 
    function(lang, DataGrid, ItemFileWriteStore, dom){ 

这样我打电话与呼叫郎,DataGrid和ItemFileWriteStore模块背面的功能使用这些模块,一些模块没有回调,比如dojo/domReady !.

那么在调用模块的顺序中是否存在差异或会导致错误?或者重要的部分是让它们在需求和功能上具有相同的顺序。但首先打电话并不重要?

回答

2

我不确定你在问什么。但函数中的参数应与您导入的模块名称的顺序/顺序相同(如给出的示例中所示)。

如果模块没有返回一个对象(如domReady),建议将它作为最后一个模块,因为它们大多数仍然返回一些东西(如HTML文档或函数或其他东西)。

你当然也可以将它们添加任何你想要的,但如果你将切换dojo/domdojo/domReady!,那岂不是变量dom将不再包含的代码dojo/dom但对于其它模块(没有对象)。 这意味着你必须做一些事情,如:

require(['dojo/_base/lang', 'dojox/grid/DataGrid', 'dojo/data/ItemFileWriteStore', 'dojo/domReady!', 'dojo/dom'], 
    function(lang, DataGrid, ItemFileWriteStore, placeholder, dom){ 

placeholder没有实际使用。

0

我想你可能会误解某些东西,或者我误解了你的意思。

define()函数有两个参数:

  • 是依赖模块名称的数组
  • 需要这些依赖

该模块或模块名称的回调函数本身不回调,回调函数是你编写的函数,当所有的模块都被加载后会被触发。

正如Demitri M所说,在回调函数结束时放置不返回值的模块是有意义的,因为这样可以缩短参数列表。