为什么我的 ExtJS 5 面板无法通过 VC 解析显示监听器?瓦特/ Fiddle
How come my ExtJS 5 panel cannot resolve a show listener via it's VC? W/ Fiddle
ExtJS 5.1.3 - 我有点困惑,一个简单的面板无法在 'show' 事件上解析它的 VC。附加的 fiddle 将起作用 - 它有一个带有 VC 的面板。单击按钮可查看 VC 正确解析。
但是,如果您取消注释 'show' 事件,代码将在控制台中失败,因为找不到该函数(无法动态解析 mypanel 上的 "show" 侦听器的范围- xxxx).我的很多代码已经这样工作了,我是不是在做傻事?
我试过使用 add() 而不是 widget() 以防它是某种 MVC 嵌套问题,但 Ext 只是在错误的 VC 中寻找函数 - 顶部 -级别 VC 应用于视口。
非常感谢任何帮助。谢谢
https://fiddle.sencha.com/#view/editor&fiddle/1kvd
Ext.define('Admin.view.TheController', {
extend : 'Ext.app.ViewController',
alias : 'controller.thecontroller',
doShowStuff : function() {
Ext.Msg.alert('SHOW STUFF!', 'yep, this works');
},
doOkStuff : function() {
Ext.Msg.alert('OK STUFF!', 'yep, this works');
}
});
Ext.define('Admin.view.Panel.MyPanel', {
extend : 'Ext.panel.Panel',
alias : 'widget.mypanel',
autoRender : true,
autoShow : true,
controller : 'thecontroller',
width : 200,
height : 200,
html : 'I am your panel',
buttons : [
{ text : 'OK', handler : 'doOkStuff', scope : 'controller' }
],
listeners : [
// This listener causes an error
//{ show : 'doShowStuff', scope : 'controller' },
]
});
Ext.widget('mypanel');
listeners: {
// This listener causes an error
show:{
fn: 'doShowStuff',
scope: 'controller'
}
}
这是fiddle
您的侦听器配置错误,它们应该是一个对象,而不是数组。另外,你应该省略范围,它会自动确定:
Ext.define('Admin.view.Panel.MyPanel', {
extend: 'Ext.panel.Panel',
alias: 'widget.mypanel',
autoShow: true,
controller: 'thecontroller',
width: 200,
height: 200,
html: 'I am your panel',
buttons: [{
text: 'OK',
handler: 'doOkStuff'
}],
listeners: {
show: 'doShowStuff'
}
});
ExtJS 5.1.3 - 我有点困惑,一个简单的面板无法在 'show' 事件上解析它的 VC。附加的 fiddle 将起作用 - 它有一个带有 VC 的面板。单击按钮可查看 VC 正确解析。
但是,如果您取消注释 'show' 事件,代码将在控制台中失败,因为找不到该函数(无法动态解析 mypanel 上的 "show" 侦听器的范围- xxxx).我的很多代码已经这样工作了,我是不是在做傻事?
我试过使用 add() 而不是 widget() 以防它是某种 MVC 嵌套问题,但 Ext 只是在错误的 VC 中寻找函数 - 顶部 -级别 VC 应用于视口。
非常感谢任何帮助。谢谢
https://fiddle.sencha.com/#view/editor&fiddle/1kvd
Ext.define('Admin.view.TheController', {
extend : 'Ext.app.ViewController',
alias : 'controller.thecontroller',
doShowStuff : function() {
Ext.Msg.alert('SHOW STUFF!', 'yep, this works');
},
doOkStuff : function() {
Ext.Msg.alert('OK STUFF!', 'yep, this works');
}
});
Ext.define('Admin.view.Panel.MyPanel', {
extend : 'Ext.panel.Panel',
alias : 'widget.mypanel',
autoRender : true,
autoShow : true,
controller : 'thecontroller',
width : 200,
height : 200,
html : 'I am your panel',
buttons : [
{ text : 'OK', handler : 'doOkStuff', scope : 'controller' }
],
listeners : [
// This listener causes an error
//{ show : 'doShowStuff', scope : 'controller' },
]
});
Ext.widget('mypanel');
listeners: {
// This listener causes an error
show:{
fn: 'doShowStuff',
scope: 'controller'
}
}
这是fiddle
您的侦听器配置错误,它们应该是一个对象,而不是数组。另外,你应该省略范围,它会自动确定:
Ext.define('Admin.view.Panel.MyPanel', {
extend: 'Ext.panel.Panel',
alias: 'widget.mypanel',
autoShow: true,
controller: 'thecontroller',
width: 200,
height: 200,
html: 'I am your panel',
buttons: [{
text: 'OK',
handler: 'doOkStuff'
}],
listeners: {
show: 'doShowStuff'
}
});