2013-03-15 53 views
0

dijit/form/ComboBox是选择元素和文本框的混合。 我有: - 3个记忆选择3个选项 每次选择“更改”时,组合框将填充选定的记忆 该项目可以在组合框中选择。 再次选择内存并将其填充到组合框中dojo1.8 - 无法在更新内存时刷新组合框的输入文本框

看起来一切都很好但是... 无法更新ComoBox的文本框以反映内存中的更改。或者甚至不能设置为空白。 我试过使用value:“”;或placeHolder:“”;但无济于事。

meter_Select.on('change', function() 
      { 
       //registry.byId('batchSelect').destroyrescursive(); 
       console.debug("selected -> " + meter_Select.value); 
       switch(meter_Select.value) 
       { 
        case 'testdata1970_05': var memoStore2 = new Memory({data:response2}); 
        break; 
        case 'testdata1970_10': var memoStore2 = new Memory({data:response3}); 
        break; 
        case 'testdata2060_03': var memoStore2 = new Memory({data:response1}); 
       } 

       //memoStore2.put({"mfg_code":""});// it works but it needs to be moved to the top! 

       var combx = registry.byId('cardSelect');// at first it will be undefined 
       console.debug('ComboBox Select(1A) ='+combx); 

       if(combx)//if combx exists or already defined 
       { 
        combx.store = memoStore2; 
        combx.value = ""; 
        combx.placeHolder = "Choose one of the batch..."; 
        //combx.domAttr.set('cardSelect','displayedValue',''); 
        console.debug('ComboBox Select(1C) ='+combx); 
        //domAttr.set('batchSelect','store','nemoStore2'); 
       } 
       else 
       {// if combx does not exist or is not defined yet 
        combx = new ComboBox({ 
        id: 'cardSelect', 
        store: memoStore2, 
        searchAttr: "mfg_code", 
        value :"", 
        placeHolder: "Choose one of the batch..." 
        }, "node_cardSelect"); 
        console.debug('ComboBox Select(1B) ='+combx); 
       } 

       combx.startup(); 

您可以在jsFiddle Link 请告知退房。在此先感谢

回答

1

您应该使用小部件的'set()方法来更改它们的任何内部属性,就像您应该使用get()来获取它们一样。

您应该(几乎)不会以您所做的方式直接访问小部件属性

在你的情况,你要设置的存储和组合框的值,所以:

if(combx) 
    { 
     combx.set("store", memoStore2); 
     combx.set("value", ""); 
    } 
    else { .... 

当你只是做combx.value,你只是给控件一个新的内部价值,但小部件没有意识到它。

使用set方法可以为小部件来执行所有新价值的其他必要的行动,如渲染的标签,也许一些验证等

+0

您好感谢它确实有助于解决这个问题的机会。你能指引我到哪里我可以学习更多关于设置和获取?这是来自dojo/Stateful吗? – user1739825 2013-03-18 01:48:19

+0

我不确定它是如何被记录的,它似乎是跨dojo/dijit/dojox的通用约定。例如,_WidgetBase描述了它:http://dojotoolkit.org/reference-guide/1.8/quickstart/writingWidgets.html#attributes(但对于例如dojo/store/xyz也是如此,也可能是dojo/Stateful )。 – Frode 2013-03-18 14:16:44