在 AMD 中使用 dojox/form/BusyComboButton

Using dojox/form/BusyComboButton in AMD

我正在尝试在 AMD 代码中使用 dojox/form/BusyComboButton,但找不到如何使用的示例(我不确定是否可行)。

由于它是在 dojox/form/BusyButton 文件中声明的,而没有从模块返回,因此我找不到通过 require 调用或在 html 中不使用非 AMD 代码来拉取它的方法。

有没有办法在不修改 dojox 的情况下做到这一点?

Dojo 将模块添加到全局范围 (window)。这意味着您仍然可以检索它们以在您的代码中使用,例如:

require(["dojox/form/BusyButton", "dojo/domReady!"], function() {
    var BusyComboButton = window.dojox.form.BusyComboButton;
    var btn = new BusyComboButton({
        label: "My button"
    }, "test");
});

如果您也喜欢为 BusyComboButton 使用 AMD 加载器,您可以创建自己的 shim,例如:

custom/BusyComboButton.js:

define(["dojox/form/BusyButton"], function() {
    return window.dojox.form.BusyComboButton;
});

那么你可以使用:

require(["custom/BusyComboButton", "dojo/domReady!"], function(BusyComboButton) {
    var btn = new BusyComboButton({
        label: "My button"
    }, "test");
});