自定义函数内的Dojo功能

时间:2012-06-27 18:52:27

标签: javascript asynchronous dojo

使用dojo我收到错误:无法读取null的属性'style'。不总是,但经常。 我试着弄清楚会发生什么。在我的应用程序中,我需要在我的函数中使用dojo功能,例如:

function updateModifySettings() {
    require(["dijit/registry"], function(registry){
          var drag = registry.byId("toolbar.modify.drag").checked,
              rotate = registry.byId("toolbar.modify.rotate").checked,
              resize = registry.byId("toolbar.modify.resize").checked,
              ...
    }
}

我在dojo中很新,不知道如何以正确的方式编写上面的代码。我认为这段代码会导致错误。

1 个答案:

答案 0 :(得分:3)

“require”部分应该在函数之外。如果您希望updateModifySettings成为全局函数,请尝试以下:

require(["dijit/registry"], function(registry){
    window.updateModifySettings = function () {
        var drag = registry.byId("toolbar.modify.drag").checked,
          rotate = registry.byId("toolbar.modify.rotate").checked,
          resize = registry.byId("toolbar.modify.resize").checked,
          ...

    }
});

Dojo切换到使用1.7中的Asynchronous Module Definition (AMD)格式,这需要一种新的方式来加载它的模块。您可以阅读有关如何在AMD here中构建和引用Dojo模块的信息。

window object是JavaScript中的顶级对象。通过将函数添加到window对象,它们可以全局使用。