添加按钮返回EXTJS中的[object] [object]

时间:2012-09-19 09:19:37

标签: button extjs extjs4 extjs-mvc

我有一个控制器,它基本上调用一个显示几秒钟的消息窗口。我试图在这个消息窗口中添加一个按钮,但它返回[object] [object]。

控制器

success : function(response) {

                this.mWin = Ext.create('App.view.GenMessage');
                this.mWin.addMessage(true, LANG.SUCT, LANG.SUCTxt1);
}

查看

Ext.define('App.view.GenMessage', {
extend : 'Ext.panel.Panel',
alias : 'widget.genmessage',

initComponent : function() {

    this.msgCt = App.genMsgCt
    this.msgCt.setWidth(300);
},
addMessage : function(status, title, msg) {

    if (status == false) {
        delay = 3000;
    } else {
        delay = 2000;
    }

    Ext.DomHelper.append(this.msgCt, {
        html : this.buildMessageBox(status, title, msg)
    }, true).slideIn('t').pause(delay).ghost("t", {
        remove : false
    });
},

/*
 * buildMessageBox
 */
buildMessageBox : function(status, title, msg) {
    console.log('buildMesssage');

    switch (status) {
        case true :
            var icon = GENHTML.tick;
            break;
        case false :
            var icon = GENHTML.warning;
            break;
    }

    return ['<div class="genMsgDiv">', icon,
                    '<div class="genMsgHd leftMargin">', title,
                    '</div><div class="H3 leftMargin">', msg,
                    '</div></div>'].join('');
}

我做的是声明一个像

这样的按钮
var button={
id: 'button1',
text :'Button1'
}

然后添加到上面提到的div类并返回

['<div class="genMsgDiv">', button].join();

但是,我在屏幕上看到的是[对象] [对象]而不是按钮。 谁能告诉我这里做错了什么。这是添加按钮的正确方法吗

修改

由于我们无法向div添加按钮,我尝试了

var config = Ext.create(Ext.panel.Panel, {



                itemId : 'GENMSGPANEL',

                height : 150,
                cls : 'msg effect1',

                border : false,
                html : '<div class="genMsgDiv">' + icon +
                    '<div class="genMsgHd leftMargin">'+ title +
                    '</div><div class="H3 leftMargin">'+ msg +
                    '</div></div>',


                items : [{
                    xtype : 'panel',
                    //cls : 'winTitle',

                }, {
                    xtype : 'form',
                    itemId : 'GENMSGFORM',
                    border : false,
                    title : '',
                    buttonAlign : 'center',
                    fieldDefaults : {
                        msgTarget : 'side',
                        labelWidth : 110,
                        size : 30
                    },
                    buttons : [{
                        text : LANG.BTYES,
                        iconCls : 'icon-tick-tb',
                        iconAlign : 'right',
                        cls : 'tip-btn',
                        action : 'genDelete',
                        id : 'BTYES'
                    }, {
                        text : LANG.BTNO,
                        iconCls : 'icon-cross-tb',
                        iconAlign : 'right',
                        cls : 'tip-btn',
                        action : 'notDelete',
                        id : 'BTNO'
                    }]
                }]
            });


    return config;

但是,即使这并没有返回任何东西

1 个答案:

答案 0 :(得分:2)

答案很简单:你不能将ExtJS Button添加到组件的html配置属性中。这个只适用于普通的HTML。 ExtJS对象属于items数组。

决定将html内容放入一个框(组件的xtype)并将其添加到items数组中。然后你可以添加你的按钮。在你的情况下根本不要使用html。

您可以更改/设置任何所需的课程。 请注意,我没有检查你操纵DOM的方式。

// you may use a layout to align them
items : [
    { 
        xtype: 'box',
        cls : 'msg effect1',
        html : '<div class="genMsgDiv">' + icon +
            '<div class="genMsgHd leftMargin">'+ title +
            '</div><div class="H3 leftMargin">'+ msg +
            '</div></div>'
    },
    {
        xtype : 'panel',
        //cls : 'winTitle',
    },
    ...