我在Ext JS 4中从组合框侦听器调用自定义函数时遇到问题。 我已经设置了如下的组合框监听器。
listeners:{
select:{
fn:function(combo, value) {
this.test;
}
}
}
我的自定义功能是我在
结束后创建的 this.callParent(arguments);
我的自定义功能
test: function(){
alert('test');
}
我做错了什么?
答案 0 :(得分:2)
您的范围错误,您的选择功能中的this
指的是您的组合,可能没有您的对象您的测试功能已启用。此外,如果你打电话给一个功能,你需要围绕它:this.test()
可能更好的方式如下:
initComponent: function() {
var me = this;
me.items = [//...
{
xtype: 'boxselect',
//props...
listeners: {
select:{
fn:function(combo, value) {
this.test(); // this will now be the this variable that you give to your scope.
//Or simply: me.test();
}
},
scope: me
}
}
//...
];
me.callParent();
}
您可能希望发布更多代码,因为我们需要了解测试功能的范围和组合框的范围。
答案 1 :(得分:1)
以下是我的代码
initComponent: function() {
this.items = [
{
xtype: 'form',
padding: '5 5 0 5',
autoScroll:true,
border: false,
style: 'background-color: #fff;',
items: [
{
xtype:'fieldset',
columnWidth: 0.5,
id:'adfieldset',
title: 'Ad Details',
collapsible: true,
defaultType: 'textfield',
defaults: {anchor: '100%'},
layout: 'anchor',
items: [
{
xtype : 'boxselect',
store : 'product.CategoryComboBox',
name: 'category[]',
id:'category',
displayField: 'name',
valueField: 'idProductCategory',
multiSelect : false,
fieldLabel: 'Category',
//allowBlank: false,
allowQueryAll : false,
multiSelect : true,
forceSelection : true,
typeAhead: true,
triggerAction: 'all',
delimiter : ',',
width: 300,
queryMode:'local',
listeners:{select:{fn:function(combo, value) {
this.test;