我试图在视图中扩展MessageBox,以便在整个应用程序中重用它。
当我这样做时,我似乎失去了一些使消息盒有用的默认功能(msg、按钮定义、图标定义、默认拖动约束等)。文档有点混乱,因为它似乎应该在show()函数中定义信任,我不知道如何将它们设置在我的视图中。
如何才能真正扩展messagebox组件作为视图?
Basic MessageBox (我想用我的视图创建的东西):
Ext.Msg.show({
title:'Error',
msg: 'There was an error.',
buttons: Ext.Msg.YESNOCANCEL,
icon: Ext.Msg.QUESTION
});呈现:

但当我展示自己的观点时:
Ext.create('IOL.view.app.Message').show();我基本上得到了一个香草面板/窗口组件
Ext.define('IOL.view.app.Message', {
extend : 'Ext.window.Window',
config: {
},
constructor: function(config) {
this.initConfig(config);
this.callParent(arguments);
},
initComponent : function() {
Ext.apply(this, {
xtype: 'messagebox',
width: 400,
height: 200,
title:'Error',
html: 'There was an error.',
buttons: [
{ text: 'Button 1' }
]
});
this.callParent(arguments);
}// initComponent
});呈现:

发布于 2012-08-28 17:27:18
似乎您正在扩展一个Ext.window.Window,并将消息框应用于它。为什么不直接扩展Ext.window.MessageBox
Ext.define('IOL.view.app.Message', {
extend : 'Ext.window.MessageBox',
width: 400,
height: 200,
title: 'Error',
html: 'There was an error.',
buttons: Ext.Msg.YESNOCANCEL,
icon: Ext.Msg.ERROR,
// whatever else you want to do
initComponent : function() {
this.callParent(arguments);
}
});@EricCook在下面提出了一个很好的观点。MessageBox类是为在应用程序中重用而设计的,不是真正用于子类的。
在你的问题中你说:
我试图在视图中扩展MessageBox,以便在整个应用程序中重用它
我可以理解,如果您想要创建使用普通Ext.Msg.show方法调用的不同类型的消息框,您可以使用自己的按钮或图标扩展MessageBox。
但是对于常规使用来说,这并不是你需要扩展的东西。如果要在应用程序中重复使用,可以在控制器中保存对消息框配置的引用,如下所示:
// SomeController.js
errorMsg: {
title:'Error',
msg: 'There was an error.',
buttons: Ext.Msg.YESNOCANCEL,
icon: Ext.Msg.QUESTION
},然后,每当您想要调用可以使用的消息类型时(假设作用域是控制器本身,或者可以事先获得对控制器的引用):
Ext.Msg.show(this.errorMsg);https://stackoverflow.com/questions/12163842
复制相似问题