更改侦听器在 extjs 中不起作用
change listener doesnt work in extjs
我有一个动态表单,我想在更改字段值时添加一个侦听器,但我无法做到这一点。我添加了一个点击侦听器,但是当我将其更改为更改时它不起作用。
提前致谢。
下面是代码:
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);
}
});
当我写点击而不是更改时,它工作得很好。我不明白我做错了什么。
您为其添加侦听器的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() 中返回的子项需要包含更改事件侦听器配置。
编辑
您可以在 afterrender 事件中遍历 comp 上的子项,对于任何微调器等,以这种方式添加更改事件。
我有一个动态表单,我想在更改字段值时添加一个侦听器,但我无法做到这一点。我添加了一个点击侦听器,但是当我将其更改为更改时它不起作用。
提前致谢。
下面是代码:
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);
}
});
当我写点击而不是更改时,它工作得很好。我不明白我做错了什么。
您为其添加侦听器的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() 中返回的子项需要包含更改事件侦听器配置。
编辑
您可以在 afterrender 事件中遍历 comp 上的子项,对于任何微调器等,以这种方式添加更改事件。