繁体   English   中英

带有multiSelect的Extjs 6.0.1 TagField未捕获错误:false

[英]Extjs 6.0.1 TagField Uncaught Error with multiSelect: false

我有以下标记字段声明:

  {
    xtype: 'tagfield',
    fieldLabel: 'Sex',
    labelAlign: 'right',
    name: 'sex',
    multiSelect: false,
    queryMode: 'local',
    displayField: 'sexName',
    valueField: 'sex',
    allowBlank: false,
    flex: 1,
    editable: true,
    growMax: 45,
    store: Ext.create('Ext.data.Store', {
        autoLoad: true,
        fields: ['sexName', 'sex'],
        data: [{
          sexName: 'mail',
          sex: 'mail'
        },{
          sexName: 'femail',
          sex: 'femail'
        }]
    })
  }

当我尝试将tagfield的值设置为组合框时,我希望它可以正常工作,但是在控制台中出现以下错误。

[E] Ext.form.field.ComboBox.doSetValue():无法向非multiSelect ComboBox添加值未捕获的错误:无法向非multiSelect ComboBox添加值

我究竟做错了什么?

谢谢你的帮助!

我们有类似的问题。 (尽管我们使用ExtJs 5)

我们需要组合使用自由文本输入,一次只能选择/输入一个值。 因此,我们使用TagField并将multiSelect设置为false 它开始表现怪异,自由文本输入的可能性消失了。

我相信该解决方案将解决原始问题:

  1. 返回multiSelect再次为true
  2. 添加侦听器以change事件,并将值更改为用户最后选择的值

使用问题中的代码示例:

{
xtype: 'tagfield',
fieldLabel: 'Sex',
labelAlign: 'right',
name: 'sex',
multiSelect: true,
queryMode: 'local',
displayField: 'sexName',
valueField: 'sex',
allowBlank: false,
flex: 1,
editable: true,
growMax: 45,
listeners: {        
    change: function (field, newValue ,oldValue ,eOpts) {           
            newValue = newValue.filter(function(el) {
               return el !== oldValue[0];
            });
            this.setValue(newValue );
        }  
    }
},

...
}

oldValue是一个仅包含一个元素(先前值)的数组。 newValue是一个包含两个元素的数组:先前值和新选择的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM