我最近必须创建一个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。但是,让该模型接受多个值似乎仍然很棘手。