每次创建新组合框时都需要调用 require 方法吗?

Do I need to call require method each time I create new combobox?

我有 3 个道场组合框。每个都有 require 方法,我对每个盒子都执行相同的过程。当我将所有内容放入 require 方法时,没有任何效果,所以我需要创建 3 次 require 方法。

<script>
    .....
    require([
        "dojo/store/Memory", "dijit/form/ComboBox", "dojo/domReady!"
    ], function (Memory, ComboBox) {
        var roomStore = new Memory({
            data: [
                {name: "1", id: "1"},
                {name: "2", id: "2"},
                {name: "3", id: "3"},
                {name: "4", id: "4"},
                {name: "5", id: "5"},
                {name: "6", id: "6"},
                {name: "7", id: "7"},
                {name: "8", id: "8"},
                {name: "9", id: "9"},
                {name: "10", id: "11"},
                {name: "11", id: "11"},
                {name: "12", id: "12"},
                {name: "13", id: "13"},
                {name: "14", id: "14"},
                {name: "15", id: "15"},
                {name: "16", id: "16"},
                {name: "17", id: "17"},
                {name: "18", id: "18"},
                {name: "19", id: "19"},
                {name: "20", id: "20"}
            ]
        });
        var comboBox = new ComboBox({
            id: "roomSelect",
            name: "room",
            value: "0",
            store: roomStore,
            searchAttr: "name",
            style: {width: "45px"}
        }, "roomSelect");
    });
    require([
        "dojo/store/Memory", "dijit/form/ComboBox", "dojo/domReady!"
    ], function (Memory, ComboBox) {
        var adultStore = new Memory({
            data: [
                {name: "1", id: "1"},
                {name: "2", id: "2"},
                {name: "3", id: "3"},
                {name: "4", id: "4"},
                {name: "5", id: "5"},
                {name: "6", id: "6"},
                {name: "7", id: "7"},
                {name: "8", id: "8"},
                {name: "9", id: "9"},
                {name: "10", id: "10"},
                {name: "11", id: "11"},
                {name: "12", id: "12"},
                {name: "13", id: "13"},
                {name: "14", id: "14"},
                {name: "15", id: "15"}
            ]
        });
        var comboBox = new ComboBox({
            id: "adultSelect",
            name: "adult",
            value: "0",
            store: adultStore,
            searchAttr: "name",
            style: {width: "45px", left: "5px"}
        }, "adultSelect");
    });
    require([
        "dojo/store/Memory", "dijit/form/ComboBox", "dojo/domReady!"
    ], function (Memory, ComboBox) {
        var childStore = new Memory({
            data: [
                {name: "1", id: "1"},
                {name: "2", id: "2"},
                {name: "3", id: "3"},
                {name: "4", id: "4"},
                {name: "5", id: "5"},
                {name: "6", id: "6"},
                {name: "7", id: "7"},
                {name: "8", id: "8"},
                {name: "9", id: "9"},
                {name: "10", id: "10"}
            ]
        });
        var comboBox = new ComboBox({
            id: "childSelect",
            name: "child",
            value: "0",
            store: childStore,
            searchAttr: "name",
            style: {width: "45px", left: "5px"}
        }, "childSelect");
    });
</script>

有什么方法可以缩短它吗?

不,你不需要。您可以在同一个函数中创建所有组合框。示例如下。

<script>
.....
require([
    "dojo/store/Memory", "dijit/form/ComboBox", "dojo/domReady!"
], function (Memory, ComboBox) {
    var roomStore = new Memory({
        data: [
            {name: "1", id: "1"},
            {name: "2", id: "2"},
            {name: "3", id: "3"}
        ]
    });
    var comboBox = new ComboBox({
        id: "roomSelect",
        name: "room",
        store: roomStore,
        searchAttr: "name"
    }, "roomSelect");

    var childStore = new Memory({
        data: [
            {name: "1", id: "1"},
            {name: "2", id: "2"},
            {name: "3", id: "3"}
        ]
    });
    var comboBox2 = new ComboBox({
        id: "childSelect",
        name: "child",
        store: childStore,
        searchAttr: "name"
    }, "childSelect");
});

正如您所提到的,我不认为这有任何不起作用的理由。您的代码中可能有问题。第一次尝试时发现错误了吗?