我有一个动态表单,我想在更改字段值时添加一个监听器,但我无法做到这一点。我添加了一个点击监听器,但当我将其更改为更改时,它不起作用。
提前感谢。
这是下面的代码:
panel = Ext.define('MyApp.view.dynamicform.Form', {
extend: 'Ext.form.Panel',
alias: 'widget.dynamicformform',
title: title,
id: 'dynamicform.Form',
bodyPadding: 5,
autoScroll: true,
layout: 'auto',
defaults: {
anchor: '100%'
},
dockedItems: [],
items : genItems(storeData),
listeners: {
afterrender: function (comp) {
var element = comp.getEl();
element.on('change', function(e,el) {
alert('blabla')
});
}
},
initComponent : function() {
this.callParent(arguments);
}
});
当我写点击而非改变时,它完美地工作。我不知道我做错了什么。
答案 0 :(得分:1)
您添加了侦听器的Afterrender事件纯粹仅适用于面板组件。因此,尝试附加更改事件不会起作用,因为您尝试在面板上执行此操作:
afterrender: function (comp) {
var element = comp.getEl();
//element is the panel here, not child items such as spinners...
element.on('change', function(e,el) {
alert('blabla')
});
}
您说点击工作正常,但我认为这只是因为您点击了面板上的任何位置,包括您正在渲染的子项目。相反,返回genItems()的子项需要包含change事件监听器配置。
修改强>
您可以在Afterrender事件中循环播放comp中的子项,对于任何旋转器等,可以通过这种方式添加更改事件。