【问题标题】:Dojo request an AMD module and call backDojo 请求 AMD 模块并回调
【发布时间】:2013-03-15 15:06:37
【问题描述】:

我只是想知道,这只是一个让我的大脑发痒的一般问题。 Dojo 1.7 及以上版本使用 AMD 模块,这是调用小部件和帮助类的好方法。

使用回调调用类或 AMD 模块的正常方法如下所示:

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

通过这种方式,我调用 lang、DataGrid 和 ItemFileWriteStore 模块,并在函数中回调以使用这些模块,某些模块没有回调,例如 dojo/domReady!。

那么有区别还是会导致调用模块的顺序出错?或者重要的部分是让它们在 require 和 function 中的顺序相同。但是先调用哪个并不重要?

【问题讨论】:

    标签: require dojo amd


    【解决方案1】:

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

    如果模块不返回对象(如 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 没有实际用处。

    【讨论】:

      【解决方案2】:

      我认为你可能误解了某些东西,或者我误解了你在说什么。

      define() 函数有两个参数:

      • 作为依赖项的模块名称数组
      • 需要这些依赖项的回调函数

      模块或模块名称本身不是回调,回调是您编写的函数,并在所有模块加载后触发。

      正如 Demitri M 所说,将不返回值的模块(因为它们执行其他操作)放在回调函数的末尾是有意义的,因为这样可以缩短参数列表。

      【讨论】:

        猜你喜欢
        • 2014-10-08
        • 1970-01-01
        • 1970-01-01
        • 2013-10-28
        • 2013-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多