【问题标题】:How to populdate the dijit.form.ComboBox by calling the URL which will returns JSON data?如何通过调用将返回 JSON 数据的 URL 来填充 dijit.form.ComboBox?
【发布时间】:2015-01-09 07:46:47
【问题描述】:

我在 dojo 数据网格中有一个组合框组件,例如

var tacStore = {items:[]}; 塔克

当我点击按钮时我有按钮,我试图使用下面的代码填充组合框。

        function loadTimeZones() {

        dojo.xhrGet({
                //url: "/AAORPCAdapterServicesWeb/RPCAdapter/httprpc/TimeZoneService/getTimeZones",
                url: "/AAORPCAdapterServicesWeb/RPCAdapter/httprpc/DeliverableService/getAllTacs",
                handleAs:"json",
                load: createTimeZoneStore,
                error: function(error,ioargs){
                  console.log(error);
                }
            });
        return false;
    }

         function  createTimeZoneStore(response) {
        console.log("createTimeZoneStore::response:: "+response);
        if ( response.result != null) {
            var timezone = [];
            for(var resultCounter=0; resultCounter<response.result.length;resultCounter++)
            {
                timezone[resultCounter] = {};
                timezone[resultCounter]['name']=response.result[resultCounter];
                console.log("createTimeZoneStore::response.result[resultCounter]:: "+response.result[resultCounter]);
            }
            console.log("createTimeZoneStore::tacStore::tacs: "+tacStore);
            tacstore= new dojo.data.ItemFileWriteStore({data:{items:timezone}});
        }
        return false;
    }

正在收到回复。但是这些值没有显示在组合框中。当我点击组合框时,会出现这样的错误。fetch 不是函数

【问题讨论】:

    标签: combobox dojo dojox.grid.datagrid


    【解决方案1】:

    首先,您使用的是 ItemFileWriteStore,它是旧的 dojo/data/api API。组合框使用较新的dojo/store/api API(具体来说,您可以使用dojo/store/Memory 实现)。

    var myStore = new Memory({data: timezone});
    

    另外,您正在创建商店,但没有将其连接到 ComboBox。如果您以编程方式创建 ComboBox,请使用

    var myComboBox = new ComboBox({store: myStore});
    myComboBox.placeAt(/* wherever you like */);
    myComboBox.startup();
    

    如果 ComboBox 已经创建(以编程方式,或使用带有data-dojo-id 的标记),请使用

    myComboBox.set('store', myStore);
    /* you may need to startup the ComboBox after this - but I am not sure */
    myComboBox.startup();
    

    【讨论】:

    • 在这段代码中,它正在创建一个新的组合框,但在我的情况下,我已经创建了一个组合框。我需要以不同的方式设置商店。
    • 我的回答已经涉及到这两种情况。无论如何,它是如何创建的?标记还是程序化?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多