2016-06-13 30 views
0

我有以下tagfield聲明:ExtJS的6.0.1 TagField未捕獲的錯誤與多選:假

{ 
    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(): Cannot add values to non multiSelect ComboBox Uncaught Error: Cannot add values to non multiSelect ComboBox

我在做什麼錯?

感謝您的幫助!

+0

標籤字段帶標籤,並且僅允許選擇其中的一個是沒有意義的。我猜你可以在官方的sencha論壇上報告錯誤,Sencha會在實例化之前通過拋出另一個錯誤(「multiSelect:false在tagfield中是不允許的」)來「修復」錯誤。畢竟,'multiSelect'是從'combobox'繼承的。 – Alexander

回答

0

我們有類似的問題。 (我們與ExtJs 5一起工作)

我們需要組合自由文本輸入,一次只能選擇/輸入一個值。所以,我們把TagField設爲multiSelectfalse。 它開始表現怪異,自由文本輸入的可能性已經消失。

的解決方案,我認爲,這將解決原來的問題的問題:

  1. 回報multiSelecttrue再次
  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是一個包含兩個元素的數組:前一個值和新的選定值。