0

我在 Sencha touch 2.1 中创建了一个选择器。我的数据显示正常。我想禁用一个特定的值而不是全部,所以如果我选择该值并单击“ doneButton ”,那么它不应该被采用。

例子:

function loadPicker(paramName, valueSet) {
    Ext.Viewport.remove(Ext.getCmp(paramName + 'Pickerfield'), true);
    if (!paramName.picker) {
        paramName.picker = Ext.Viewport.add({
            xtype: 'picker',
            id: paramName + 'Pickerfield',
            useTitles: true,
            slots: [{
                name: paramName,
                title: paramName,
                data: valueSet
            }],

            doneButton: {
                listeners: {
                    tap: function(button, event, eOpts) {
                        var selectedPacingModeValue =
                            Ext.getCmp(paramName + 'Pickerfield').getValue()[paramName];
                        sendSetPendingRequest(paramName, selectedPacingModeValue);
                    }
                }
            }
        });
    }
}

让这些是我的选择器字段中的值。我在选择一个值并单击“ doneButton ”时正在做什么,我在文本字段中显示该值。我想要的是,如果我选择“选项 2 ”并单击“ doneButton ”,那么选项 2不应显示在文本字段中,但对于所有其他值,此选择并在文本字段操作中显示应该有效。

4

1 回答 1

1

您可以在单击完成按钮时获取所选记录并检查该标志,然后移动到文本框(或不移动)。

Ext.create('Ext.form.Panel', {
    fullscreen: true,
    items: [
        {
            xtype: 'fieldset',
            title: 'Select',
            items: [
                {
                    xtype: 'selectfield',
                    itemId: 'mySelectField',
                    label: 'Choose one',
                    options: [
                        {
                            text: 'apple',
                            value: 50
                        }, {
                            text: 'orange',
                            value: 100,
                            disabled: true
                        }, {
                            text: 'banana',
                            value: 200
                        }, {
                            text: 'papaya',
                            value: 300
                        }
                    ]
                },
                {
                    xtype: 'button',
                    text: 'done',
                    handler: function(button){
                        var panel = button.up(),
                            sf = panel.down('#mySelectField'),
                            tf = panel.down('#answerfield');

                        /* you can only access the raw value unless you use
                         * an actual store and an actual model with the 
                         * disabled field. In that case you can do
                         * sf.getRecord().get('disabled')
                         */ 
                        if(sf.getRecord().raw.disabled === true){
                            tf.setValue(''); //noting to see :)
                        } else {
                            tf.setValue(sf.getRecord().get('text')); //display value
                        }
                    }
                },
                {
                    xtype: 'textfield',
                    itemId: 'answerfield',
                    title: 'answer'
                }
            ]
        }
    ]
});

工作小提琴:http ://www.senchafiddle.com/#d46XZ

更新 就像你问的那样:使用选择器

Ext.Loader.setConfig({
    enabled: true
});

Ext.application({
    name: 'SenchaFiddle',

    launch: function() {
        var picker = Ext.create('Ext.Picker', {
            slots: [
                {
                    name : 'stuff',
                    title: 'Stuff',
                    data : [
                        {
                            text: 'apple',
                            value: 50
                        }, {
                            text: 'orange',
                            value: 100,
                            disabled: true
                        }, {
                            text: 'banana',
                            value: 200
                        }, {
                            text: 'papaya',
                            value: 300
                        }
                    ]
                }
            ],
            listeners: {
                change: function(p, value){
                    var tf = panel.down('#answerfield'),
                        firstSlot = p.getItems().get(1), //index 0 is the toolbar 1 first slot and so on..
                        selectedRecord = firstSlot.getData()[firstSlot.selectedIndex];
                    if(selectedRecord.disabled === true){
                        tf.setValue(''); //noting to see :)
                    } else {
                        console.log(selectedRecord);
                        tf.setValue(selectedRecord.text); //display value
                    }
                }
            }
        });
        var panel = Ext.create('Ext.form.Panel', {
            fullscreen: true,
            items: [
                {
                    xtype: 'fieldset',
                    title: 'Select',
                    items: [
                        {
                            xtype: 'button',
                            text: 'show picker',
                            handler: function(button){
                                Ext.Viewport.add(picker);
                                picker.show();
                            }
                        },
                        {
                            xtype: 'textfield',
                            itemId: 'answerfield',
                            title: 'answer'
                        }
                    ]
                }
            ]
        });


    }
});

工作小提琴:http ://www.senchafiddle.com/#SFgpV

于 2013-05-13T07:58:57.770 回答