我正在尝试开发一个组合框,该组合框允许用户输入要查找的值,如果列表中缺少它,它会被虚拟化为新值(我曾考虑将图像留给该字段),此外还会导致字段绑定到分配给它的模型的另一个属性。
此外,用户应该能够清除组合值。
我从使用这个人提供的类开始,并使用所需的设置对其进行了扩展。我设法防止了导致“x”触发器连续隐藏的问题,但我无法管理用户输入 - 选择 - 设置 - 清除(按表单设置值)之间的区别
这是我到目前为止的一个片段
Ext.define('Ext.ux.form.field.InputCombo', {
extend: 'Ext.form.field.ComboBox',
alias: 'widget.inputcombo',
trigger2Cls: 'x-form-clear-trigger',
newRecordFieldname: null, // the name if this value is new
originName: null,
initComponent: function () {
var me = this;
me.addEvents(
/**
* @event beforeclear
* @param {Combo} Combo The combo that triggered the event
*/
'beforeclear',
/**
* @event beforeclear
* @param {Combo} Combo The combo that triggered the event
*/
'clear'
);
me.callParent(arguments);
me.on('specialkey', this.onSpecialKeyDown, me);
me.on('afterrender', function () {
me.onShowClearTrigger(false);
}, me);
this.on('change', function() {
this.createdRecord(this);
});
this.on('select', function() {
this.onSetExisting(this);
});
},
createdRecord: function(ref) {
ref.newRecord = true;
ref.selectedRecord = false;
ref.originName = ref.name;
ref.name = ref.newRecordFieldname;
ref.style = 'background:url(../resources/themes/images/default/dd/drop-add.gif) no-repeat left center;'; // does not work
},
setExisting: function(ref) {
ref.newRecord = false;
ref.selectedRecord = true;
ref.style = '';
ref.name = ref.originName;
},
/**
* @private onSpecialKeyDown
* eventhandler for special keys
*/
onSpecialKeyDown: function (obj, e, opt) {
if ( e.getKey() == e.ESC ) {
this.clear();
}
},
onShowClearTrigger: function (show) {
var me = this;
if (show) {
me.triggerEl.each(function (el, c, i) {
if (i === 1) {
el.setWidth(el.originWidth, false);
el.setVisible(true);
me.active = true;
}
});
} else {
me.triggerEl.each(function (el, c, i) {
if (i === 1) {
el.originWidth = el.getWidth();
if (el.originWidth !== 0) { // prevent double hide
el.setWidth(0, false);
el.setVisible(false);
me.active = false;
}
}
});
}
me.updateLayout();
},
/* lines remoced. see linked answer */
});
我没有设法开始工作(以及我需要帮助的地方)是显示新记录的图像,并且无论我是否首先输入内容并清除或设置值,该字段的行为方式相同,选择一个值等等。通过知道该领域的行为安静不同或根本不起作用。
此外,它应该与即将发布的 4.2 版本兼容。不知道这是否重要。
任何帮助表示赞赏!