首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将MessageBox扩展为View-ExtJS4.1

将MessageBox扩展为View-ExtJS4.1
EN

Stack Overflow用户
提问于 2012-08-28 16:43:44
回答 1查看 3K关注 0票数 3

我试图在视图中扩展MessageBox,以便在整个应用程序中重用它。

当我这样做时,我似乎失去了一些使消息盒有用的默认功能(msg、按钮定义、图标定义、默认拖动约束等)。文档有点混乱,因为它似乎应该在show()函数中定义信任,我不知道如何将它们设置在我的视图中。

如何才能真正扩展messagebox组件作为视图?

Basic MessageBox (我想用我的视图创建的东西):

代码语言:javascript
运行
复制
Ext.Msg.show({
     title:'Error',
     msg: 'There was an error.',
     buttons: Ext.Msg.YESNOCANCEL,
     icon: Ext.Msg.QUESTION
});

呈现:

但当我展示自己的观点时:

代码语言:javascript
运行
复制
Ext.create('IOL.view.app.Message').show();

我基本上得到了一个香草面板/窗口组件

代码语言:javascript
运行
复制
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
});

呈现:

EN

回答 1

Stack Overflow用户

发布于 2012-08-28 17:27:18

似乎您正在扩展一个Ext.window.Window,并将消息框应用于它。为什么不直接扩展Ext.window.MessageBox

代码语言:javascript
运行
复制
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

但是对于常规使用来说,这并不是你需要扩展的东西。如果要在应用程序中重复使用,可以在控制器中保存对消息框配置的引用,如下所示:

代码语言:javascript
运行
复制
// SomeController.js
errorMsg: {
     title:'Error',
     msg: 'There was an error.',
     buttons: Ext.Msg.YESNOCANCEL,
     icon: Ext.Msg.QUESTION
},

然后,每当您想要调用可以使用的消息类型时(假设作用域是控制器本身,或者可以事先获得对控制器的引用):

代码语言:javascript
运行
复制
Ext.Msg.show(this.errorMsg);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12163842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档