messageBox 上的 ExtJS callParent 显示方法不起作用
ExtJS callParent on messageBox show method not working
在 ExtJS 6.02 上,我有这个代码:
Ext.define('MyDialog', {
extend : 'Ext.window.MessageBox'
, title : 'My title'
, closable : false
, buttonText : {
ok : 'Yes'
, yes : 'Yep'
, no : 'No way'
, cancel : 'Cancel'
}
, show: function(cfg) {
cfg = {
icon: Ext.Msg.QUESTION
, msg : 'test'
, buttons : Ext.Msg.OKCANCEL
};
this.callParent(cfg);
}
});
弹出窗口显示为空白,似乎 cfg
没有传递给父 class 方法!
想通了。
callParent 的参数必须是arrayLike 类型,因为ExtJS 内部使用Function.prototype.apply()
.
所以这有效:
Ext.define('MyDialog', {
extend : 'Ext.window.MessageBox'
, title : 'My title'
, closable : false
, buttonText : {
ok : 'Yes'
, yes : 'Yep'
, no : 'No way'
, cancel : 'Cancel'
}
, show: function(cfg) {
cfg = {
icon: Ext.Msg.QUESTION
, msg : 'test'
, buttons : Ext.Msg.OKCANCEL
};
this.callParent([cfg]);
}
});
在 ExtJS 6.02 上,我有这个代码:
Ext.define('MyDialog', {
extend : 'Ext.window.MessageBox'
, title : 'My title'
, closable : false
, buttonText : {
ok : 'Yes'
, yes : 'Yep'
, no : 'No way'
, cancel : 'Cancel'
}
, show: function(cfg) {
cfg = {
icon: Ext.Msg.QUESTION
, msg : 'test'
, buttons : Ext.Msg.OKCANCEL
};
this.callParent(cfg);
}
});
弹出窗口显示为空白,似乎 cfg
没有传递给父 class 方法!
想通了。
callParent 的参数必须是arrayLike 类型,因为ExtJS 内部使用Function.prototype.apply()
.
所以这有效:
Ext.define('MyDialog', {
extend : 'Ext.window.MessageBox'
, title : 'My title'
, closable : false
, buttonText : {
ok : 'Yes'
, yes : 'Yep'
, no : 'No way'
, cancel : 'Cancel'
}
, show: function(cfg) {
cfg = {
icon: Ext.Msg.QUESTION
, msg : 'test'
, buttons : Ext.Msg.OKCANCEL
};
this.callParent([cfg]);
}
});