0

dijit / form / ComboBoxは、select要素とテキストボックスのハイブリッドです。私が持っているもの:-3つのメモリの3つのオプションの選択「変更された」を選択するたびに選択されたメモリが入力されるComboBoxアイテムはComboBoxで選択できます。ここでも、メモリが選択され、ComboBoxに入力されます

すべて問題ないようですが...ComoBoxのテキストボックスを更新してメモリの変更を反映することはできません。または、空白に設定することもできません。値を使ってみました: ""; または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();

jsFiddleLinkでチェックアウトできます 。アドバイスしてください。前もって感謝します

4

1 に答える 1

1

内部プロパティを変更するには、ウィジェットを取得する場合と同様に、ウィジェットのset()メソッドを使用する必要があります。get()

これまで行ってきた方法で、ウィジェットのプロパティに直接アクセスすることは (ほとんど) すべきではありません。

あなたの場合、ストアとコンボボックスの値を設定したいので、次のようにします。

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

を実行するとcombx.value、ウィジェットに新しい内部値が与えられるだけですが、ウィジェットはそれを認識しません。

メソッドを使用するsetと、ラベルのレンダリング、おそらくいくつかの検証など、新しい値に必要な他のすべてのアクションをウィジェットに実行する機会が与えられます。

于 2013-03-15T14:29:45.877 に答える