Extjs Combobox:在combobox上的forceSelection false不起作用

时间:2013-07-04 09:59:18

标签: extjs combobox sencha-architect

我创建了一个组合框并附加了一个数组来存储。我想要的是使用可以从列表中选择或也可以键入自定义文本。我搜索了可以通过forceSelection = false来实现,我读了文档,发现forceSelection默认是假的,因为我使用sencha架构师所以我不能显式设置配置。以下是我所做的配置。但是只要我按Tab键或在组合框中输入键入的文本就不再存在。

{
xtype: 'fieldcontainer',                                    
id: 'internetmessager',
autoDestroy: false,
layout: {
    align: 'stretch',
    type: 'hbox'
},
items: [
    {
        xtype: 'combobox',
        flex: 1,
        margin: '0 10 0 0',
        name: 'label',
        autoSelect: false,
        queryMode: 'local',
        store: [
            'Home',
            'Work',
            'Personal'
        ],
        typeAhead: true
    },
    {
        xtype: 'textfield',
        flex: 2,
        name: 'value',
        emptyText: 'IM'
    }
]
}

谢谢, 阿里阿巴斯

2 个答案:

答案 0 :(得分:0)

[编辑] 哦,伙计......对不起...... 在我重读你的问题之后,我意识到你正在使用Sencha Architect [/编辑]

我不确定,如果我理解正确的话...... 我做了什么: 写入组合框或从其商店中选择一个值。 离开(模糊监听器)组合框时,实际值被设置为文本字段。 顺便说一句:itemId会很好用(imho)

    items: [
{
    xtype: 'fieldcontainer',
    id: 'internetmessager',
    autoDestroy: false,
    layout: {
        align: 'stretch',
        type: 'hbox'
    },
    items: [
        {
            xtype: 'combobox',
            flex: 1,
            margin: '0 10 0 0',
            name: 'label',
            autoSelect: false,
            queryMode: 'local',
            store: [
                'Home',
                'Work',
                'Personal'
            ],
            typeAhead: true,
            listeners: {
                blur: function (combo) {
                    Ext.ComponentQuery.query('[name=value]')[0].setValue(combo.getValue());
                }
            }
        },
        {
            xtype: 'textfield',
            flex: 2,
            name: 'value',
            emptyText: 'IM'
        }
    ]
}

答案 1 :(得分:0)

我认为这是sencha Architect 2.2.2中的一个错误,'forceSelection'的默认值为true,但docs说它是假的。并且架构师不会通过假设'forceSelection'属性为false来为你提供使'forceSelection'伪造b / c的方法。如果我错了,那就是我纠结我的问题。我做的解决方法是使用arhitect配置面板中的“Process Confg”。添加 processLabel 功能

{
    xtype: 'fieldcontainer',
    id: 'internetmessager',
    autoDestroy: false,
    layout: {
        align: 'stretch',
        type: 'hbox'
    },
    items: [
        me.processLabel({
            xtype: 'combobox',
            flex: 1,
            margin: '0 10 0 0',
            name: 'label',
            store: [
                'Home',
                'Work',
                'Personal'
            ],
            valueField: 'text'
        }),
        {
            xtype: 'textfield',
            flex: 2,
            name: 'value',
            emptyText: 'IM'
        }
    ]
}

processLabel 函数中,我明确地使forceSelection属性为false。

 processLabel: function(config) {        
    config.forceSelection = false;
    return config;
}