自定义对话框extjs

时间:2013-01-23 13:18:50

标签: extjs extjs4

我尝试为我的应用编写自定义对话框。我想写了一个Ext.window.MessageBox的子类,并通过参数传递标题和消息。 我写道:

Ext.define('CRUDManantiales.view.dialog.NoUserSelected',{
    extend: 'Ext.window.MessageBox',
    alias: 'dialog.noUserSelected',

    initComponent: function(){
        this.title = this.titulo;
        this.msg = 'No se ha seleccionado ningún usuario.\n Asegurese de haber elegido un usuario\n\
                           al cual aplicarle la operación.';
        this.buttons = Ext.MessageBox.OK;
        this.icon = Ext.MessageBox.ERROR;
        this.callParent(arguments)
    }
})

但是当创建并显示对话框时:

Ext.create('CRUDManantiales.view.dialog.NoUserSelected',{titulo: 'Agregar administrador'}).show();

Firebug说:

  

TypeError:在MessageBox.js上未定义cfg   “NetworkError:404 Not Found - http://appadmin.local/x-message-box-error

有什么想法吗? 注意:即时通讯使用ExtJs 4.1

1 个答案:

答案 0 :(得分:2)

您需要将配置对象传递给方法Ext.Msg。show(cfg),而不是设置组件配置。

您可以编写自定义方法,如下:

...
initComponent: function(){
    this.callParent(arguments)
},

showError: function() {
    var cfg = {
        title: this.titulo,
        msg: 'No se ha seleccionado ningún usuario.\n Asegurese de haber elegido un usuario\n\al cual aplicarle la operación.',
        buttons: Ext.MessageBox.OK,
        icon: Ext.MessageBox.ERROR
    };
    this.show(cfg);
}
...

并显示对话框:

Ext.create('CRUDManantiales.view.dialog.NoUserSelected',{titulo: 'Agregar administrador'}).showError();