ExtJS 5 multiSelect标签/组合框:允许多次选择同一项目

时间:2018-08-29 11:08:55

标签: extjs multi-select extjs5

我最近必须创建一个for字段,该字段允许我从组合框中选择项目。现在,组合框会自动取消选择一项(如果已选中)。但是我希望能够选择多次。我看到此版本在以前的版本中有效,但我认为它更多是一个错误。使用最新的ext js 5版本。

我试图扩展普通的组合框并扩展选择模型 initComponent中的“ onNavigate”或“ onSelectChange”方法,但其中的任何日志均不起作用。

Ext.define('MyApp.MultiSelect', {
  extend: 'Ext.form.field.Tag',
  alias: 'widget.field-multiselect',
  selectOnFocus: false,
  delimiter: '->',
  editable: false,
  renderField: 'name',
  displayField: 'name',
  valueField: 'id',
  multiSelect: true,
  allowDeselect: false,
  listConfig: {
    getInnerTpl: function () {
        return [
            '<tpl>' +
            '<span>{name:htmlEncode}</span>' +
            '</tpl>'
        ];

    }
  },
  initComponent: function () {
    var me = this;
    this.callParent(arguments);

    me.selectionModel = new Ext.selection.Model({
        mode: 'MULTI',
        onNavigate: function(e) {
            console.log('nothing here');
        },
        onSelectChange: function(record, isSelected, suppressEvent, 
         commitFn) {
            // This only triggers when I click a tag, not when I click 
            // the boundlist
            console.trace('nothing here');

        }
    me.selectionModel.bindStore(me.valueStore, true);
    if (me.multiSelect && !Ext.isEmpty(me.delimiter)) {
        me.delimiterEndingRegexp = new RegExp(String(me.delimiter).replace(/[$%()*+.?\[\\\]{|}]/g, "\\$&") + "$");
    }

我还尝试创建自己的选择模型,但对于绑定列表也不起作用。

现在我该如何归档分配多个标签,而不是拥有所有取消选择的东西?另外allowDeselect似乎什么也没做。

E:我注意到选择模型不适用于绑定列表,因此我不得不在onBindStore函数中更改selectionModel。但是,让该模型接受多个值似乎仍然很棘手。

0 个答案:

没有答案