Sencha Touch - 如何在按钮单击时删除/隐藏弹出式面板

时间:2012-05-05 09:20:23

标签: sencha-touch extjs sencha-touch-2 modalpopups

我已将Panel设为贝娄

Ext.define('MyApp.view.DatePanel', {
extend: 'Ext.Panel',
alias: 'widget.DatePanel',
config: {
    itemid:'DatePanel',
    modal:true,
    centered: true,
    width:'320px',
    height:'110px',   
    items:[
            {
                xtype: 'datepickerfield',
                label: 'Select date',
                type:'date',
                itemId: 'rptDate',
                value: new Date(),
            },
            {
                xtype:'toolbar',
                docked:'bottom',
                items:[{
                    text:'OK',
                    ui:'confirm',
                    action:'ShowTurnOverReport'
                },
                {
                    text:'Cancel',
                    ui:'confirm',
                    action:'Cancel'
                }

            }
        ]
}

});

我使用下面的代码

将此面板显示为弹出式窗口
Ext.Viewport.add({xtype: 'DatePanel'});

现在点击按钮取消点击我想隐藏/删除它

我试过了

Ext.Viewport.remove(Datepanel), 
var pnl = Ext.getCmp('DatePanel');
pnl.hide();

但没有任何效果。我怎么能这样做?

1 个答案:

答案 0 :(得分:6)

你可以通过多种方式实现这一目标。

解决方案1:

要使用Ext.getCmp()功能,您需要为组件设置id属性。

因此,请为您的id提供DatePanel,如下所示

Ext.define('MyApp.view.DatePanel', {
extend: 'Ext.Panel',
alias: 'widget.DatePanel',
id:'datepanel',
config: {
     ......
     ......

然后在Cancel按钮单击处理程序,编写以下代码...

{
 text:'Cancel',
 ui:'confirm',
 action:'Cancel'
 listeners : {
     tap : function() {
           var pnl = Ext.getCmp('datepanel');
           pnl.hide();
     }
 }
}

解决方案2:

由于您已经定义了itemid属性,因此可以使用以下行来获取对组件的引用。

var pnl = Ext.Container.getComponent('DatePanel');
pnl.hide();