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

时间:2016-11-29 14:09:49

标签: combobox dojo

我有3个dojo组合框。每个方法都有require方法,我为每个方框执行相同的过程。当我将所有内容都放在require方法中时,没有任何作用,所以我需要创建require方法3次。

<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>

有没有办法让它更短?

1 个答案:

答案 0 :(得分:0)

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

<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");
});

正如你所提到的,我认为没有理由不这样做。可能是你的代码出了问题。你第一次尝试时发现了任何错误?