0

ST2 と selectfield ピッカーに問題があることに気付きました。これをデスクトップ ブラウザとタブレットでテストしていますが、どちらも同じ問題を示しているようです。

この問題は、フォーム データが空または初期化されていないことが原因のようです。私の例は、ユーザーが自分のアカウントにログインし、婚姻状況を設定する必要がある場合です。これは、バッキング ストア モデルが実際に婚姻状況に対して「null」になる前に設定されたことがないためです。ピッカーをクリックすると、何らかの理由で、チェックリストの最初の項目が自動的に選択されます。これは、項目の右側にあるチェック マークによって明らかです。これの 2 番目の副作用は、最初の項目を選択すると、ST2 はこれを項目の変更として認識しないため、選択の変更をフォームに反映しません。

これはバグですか?この問題を回避するにはどうすればよいですか?

Ext.define('Gender', {
    extend: 'Ext.data.Model',
    config: {
        fields: [
            {name: 'Id', type: 'int'},
            {name: 'ItemName',  type: 'string'}           
        ]
    }
});

Ext.define('Details', {
    extend: 'Ext.data.Model',
    config: {
        fields: [       
            {name: 'Gender',  type: 'int'}           
        ]
    }
});

var myGenderStore = Ext.create('Ext.data.Store', {
    model: 'Gender',
    data : [
        {Id: 1, ItemName: 'Male'},
        {Id: 2, ItemName: 'Female'}
    ]   
});

var myDetailsStore = Ext.create('Ext.data.Store', {
    model: 'Details',
    data : [
        { Gender: null }        
    ]   
});

var p = Ext.create('Ext.form.Panel', {
    fullscreen: true,
    items: [
        {
            xtype: 'fieldset',
            title: 'Select',
            items: [
                {
                    xtype: 'selectfield',
                    label: 'Choose one',
                    displayField: 'ItemName',
                    valueField: 'Id',
                    store: myGenderStore,
                    name: 'Gender'
                }
            ]
        }
    ]
});

p.setRecord(myDetailsStore.getAt(0))
Ext.Viewport.setActiveItem(p);
// notice the picker has 'Male' selected even though the backing store for the Gender field is null
// also, we want to select Male from the list, but this isn't reflected on the form
// run below command in console window after selecting 'Male' even though it is selected and it shows null
// It only seems to like changes to the value as selecting female works. If then select Male from Female this also works.
p.getValues().Gender;
4

2 に答える 2

0

次のようなデフォルトの選択を防ぐには、 autoSelect 構成プロパティをfalseに設定するだけです。

 {
                    xtype: 'selectfield',
                    label: 'Choose one',
                    displayField: 'ItemName',
                    valueField: 'Id',
                    store: myGenderStore,
                    name: 'Gender',
                    autoSelect:false
                }
于 2014-12-09T15:00:37.267 に答える
0

選択フィールドの値を設定できます

 p.down('selectfield[name=Gender]').setValue(myGenderStore.getAt(0).get('Id'))

例を参照してください: http://www.senchafiddle.com/#OuCtQ#GQJ2C

ありがとう

于 2013-01-04T04:16:42.743 に答える