0

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

{
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'
    }
]
}

谢谢,阿里阿巴斯

4

2 回答 2

0

[edit] 哦,伙计……对不起……在我再次阅读您的问题后,我意识到您正在使用 Sencha Architect [/edit]

我不确定,如果我理解正确......我做了什么:写入组合框或从其存储中选择一个值。当离开(模糊侦听器)组合框时,实际值被设置到文本字段中。顺便说一句:itemId 会很好用(恕我直言)

    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'
        }
    ]
}
于 2013-07-04T11:14:14.877 回答
0

我认为这是 sencha Architect 2.2.2 中的一个错误,“forceSelection”的默认值为 true,但文档说它是 false。并且架构师没有为您提供使“forceSelection”为假的方法,因为它是通过假设“forceSelection”属性为假来构建的。如果我错了,我想出的就是纠正我。我所做的解决方法是在 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;
}
于 2013-07-05T09:00:44.413 回答