Javascript Sencha Touch,MessageBox更改默认值

Javascript Sencha Touch,MessageBox更改默认值,javascript,sencha-touch,messagebox,Javascript,Sencha Touch,Messagebox,我对这段代码有问题。对于这个特殊的消息框,我希望高度为300,并且可以滚动,因为消息非常大。然而,在这被称为之后,任何消息框(确认、警报、提示)似乎都继承了我不想要的高度和可滚动值 我查看了Ext.Msg的show()方法的代码,它看起来像是传递给config ie的任何东西,上面代码中的所有参数都会合并到所有Ext.Msg对象的默认配置中。这句话似乎是这样的: Ext.Msg.show({ title: 'Validation', message: message,

我对这段代码有问题。对于这个特殊的消息框,我希望高度为300,并且可以滚动,因为消息非常大。然而,在这被称为之后,任何消息框(确认、警报、提示)似乎都继承了我不想要的高度和可滚动值

我查看了Ext.Msg的show()方法的代码,它看起来像是传递给config ie的任何东西,上面代码中的所有参数都会合并到所有Ext.Msg对象的默认配置中。这句话似乎是这样的:

Ext.Msg.show({
     title: 'Validation',
     message: message,
     height: 300,
     scrollable: true,
     buttons: Ext.MessageBox.OK
});
我试着寻找一种方法,在调用show之后,它允许我将所有默认值重置回它们的默认值,但看起来我做不到。使用

config = Ext.merge({}, this.defaultAllowedConfig, config);
由于两个原因无法工作,第一个原因是,只有当显示的任何特定消息(即提示警报或确认)没有默认值时,才会使用DefaulaAllowedConfig。其次,Sencha文档显示的默认高度设置为“auto”,这不是此语句中要传递的有效值


有人知道怎么解决这个问题吗?很抱歉,这是一篇很长的帖子,但我现在完全被卡住了。

您可以通过为自定义的消息框创建
Ext.MessageBox
的新实例来解决问题,而不是使用
Ext.Msg
singleton

那么您的代码可能如下所示:

Ext.Msg.defaultAllowedConfig.height = [some number];

这非常有效。非常感谢。你能解释一下为什么要创建一个新实例吗?我觉得如果您必须为每个“自定义”消息创建一个新实例,那么这意味着您可能会占用大量内存,这是因为singleton将show方法中提供的配置应用于自身。因此,下次调用配置参数较少的
show
方法时,singleton仍然由上一次
show
方法调用中提供的一些属性进行配置。对我来说,它看起来像是一个虫子在森查触摸。。。我认为创建新实例不会使用太多内存,因为如果您不存储对此消息框的引用并仅显示它,垃圾收集器应该在消息框关闭后自动销毁它。Viewport实际上保留了这些实例,这并不理想。垃圾收集似乎对他们没有影响。我正准备用这个问题自杀。谢谢,伙计,愿所有优秀的编程精神与你同在。
    Ext.create('Ext.MessageBox').show(
        {
            title: 'Validation',
            message: message,
            height: 300,
            scrollable: true,
            buttons: Ext.MessageBox.OK
        }        
    );