【问题标题】:Sencha Touch - How to remove/hide popup panel on button clickSencha Touch - 如何在按钮单击时删除/隐藏弹出面板
【发布时间】:2012-05-05 09:20:23
【问题描述】:

我已经创建了如下面板

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();

但没有任何效果。我该怎么做??

【问题讨论】:

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


    【解决方案1】:

    您可以通过多种方式做到这一点。

    解决方案 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();
    

    【讨论】:

    • 非常感谢 var pnl = Ext.getCmp('datepanel'); pnl.hide();。但是一个问题是当我再次打开此面板时它会发出警告(请确保现有组件已被销毁)所以我使用了 pnl.destroy();取而代之的是 pnl.hide();
    • 您可以使用 itemId 代替 id。然后使用 Ext.ComponentQuery.query('#yourItemId')[0]; 识别组件
    猜你喜欢
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 2021-08-02
    • 1970-01-01
    相关资源
    最近更新 更多