Dojo Memory setData不会设置数据

时间:2014-04-28 09:19:02

标签: combobox dojo

我遇到了问题。我正在dojo上编写一个ComboBox,如果用户正在编写一个尚未在商店中的选项,它将被添加。

我写了一个keyup事件,如果用户点击RETURN或ENTER

,它将被触发
if(pressed.keyCode == keys.ENTER){
                //var dtemp = dijit.byId("stateSelect").get("store");
                var MyMemory = new myownclass();
                var value = dijit.byId('stateSelect').get('value');
                var isNew = true;
                var d = new Memory({data : []});
                for(var vi = 0; MyMemory.data[vi].name != "";vi++)
                {
                    d.put({name : MyMemory.data[vi].name, id : MyMemory.data[vi].id});
                }
                for(var index = 0; index < d.length ; index++)
                {
                    if(value == d[index].name)
                    {
                        //alert(value);
                        isNew = false;
                    }
                    //isNew = true;
                }
                if(isNew == true){
                    MyMemory.setdata(value);
                    //var newData = new myownclass();
                    d.put({name : value, id : vi});
                    //dijit.byId('stateSelect').get('store').reset();
                    dijit.byId('stateSelect').get('store').setData(d);

                }
            }
            if(pressed.keyCode == keys.F2){
                var MyMemory = new myownclass();
                var value = dijit.byId('stateSelect').get('value');
                    MyMemory.deletedata(value);
                    //var temp = new myownclass();
                    //dijit.byId('stateSelect').get('store').remove(dijit.byId('stateSelect').get('store').get('id'));

            }

问题是它不想用新商店替换旧商店d!相反,ComboBox完全是空的:(

var d 包含内容 Firebug Screen

任何知道为什么它不会显示选项的人?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

因为您使用setData()不正确。 setData()期望插入一组对象。但是,您正在使用它来插入d,这是一个商店。因此,使用以下方法设置数据的正确方法是:

dijit.byId('stateSelect').get('store').setData(d.query());

因为如果你使用没有参数的query()函数,它将返回商店内的所有对象(作为数组)。

然而,您还可以使用以下方法直接更改组合框的商店:

dijit.byId('stateSelect').set('store', d);

Here是使用商店设定者的一个简单示例。