Javascript 如何创建';关闭';按钮隐藏Sencha T2中的当前视图?

Javascript 如何创建';关闭';按钮隐藏Sencha T2中的当前视图?,javascript,sencha-touch,sencha-touch-2,Javascript,Sencha Touch,Sencha Touch 2,从我的Main视图开始,它加载另一个带有xytpe“homepanel”的视图 Ext.define('MyApp.view.MainView', { extend: 'Ext.TabPanel', alias: 'widget.main', config: { tabBarPosition: 'bottom', items: [ { xtype: 'homepanel', // l

从我的
Main
视图开始,它加载另一个带有xytpe“homepanel”的视图

Ext.define('MyApp.view.MainView', {
    extend: 'Ext.TabPanel',
    alias: 'widget.main',
    config: {
        tabBarPosition: 'bottom',

        items: [
            {
                xtype: 'homepanel', // loads view with xytpe 'homepanel'
            }
        ]
    }
});
从“homepanel”,我们可以进入
Youtube
视图,该视图在左上角有一个
Close
按钮

Ext.define('MyApp.view.YoutubeView', {
    extend: 'Ext.navigation.View',
    xtype: 'youtube',
    // id:    'youtube',
    config: {
        navigationBar: {
            items: [
                {
                    xtype:    'button',
                    iconMask: true,
                    text:     'Close',
                    align:    'left',
                    action:   'closeButton'
                }
            ]
        },
    }
});
单击
Close
按钮时,我想返回到
Main
视图,如果可能的话,在新帖子发布时重新加载它

不幸的是,此控制器代码不起作用,因为它抛出了一个
对象,外部视口没有“隐藏”方法。
错误

Ext.define('MyApp.controller.PostStuffController', {
    extend: 'Ext.app.Controller',
    requires: [
        'Ext.navigation.View'
    ],
    config: {
        control: {
            'button[action=closeButton]': {
                tap: 'tapClose'
            }
        }
    },
    tapClose: function () {
        Ext.Viewport.getId().hide();
    }
});

关于如何关闭当前视图并加载
Main

有一些问题

  • YoutubeView扩展了导航视图。通常,您会有一个主视图,它扩展了一个导航视图,然后从这个主视图中推送和弹出视图

  • 不要使用身份证。这是导致分接头未第二次点火的原因


  • 也许这对你有帮助

    Ext.define('MyApp.controller.PostStuffController', {
    extend: 'Ext.app.Controller',
    requires: [
        'Ext.navigation.View'
    ],
    config: {
        control: {
            'button[action=closeButton]': {
                tap: 'tapClose'
            }
        }
    },
    
    
    tapClose: function (button, e, options) {
       button.up('navigationview').push({
       xtype: 'main', // view which you want to push
     });
    }
    
    });
    
    这就成功了:

    tapClose: function (cmp) {
        Ext.Viewport.remove(Ext.Viewport.getActiveItem(), true);
    }
    

    如何从homepanel转到YouTube面板?因为你只需要在这里做相反的事情。。。对吧?是的。。。但我希望有一个解决方案不仅适用于Youtube页面,还适用于其他可能导航到的页面——在homepanel上,我有一个导航栏,带有一个按钮,可以打开覆盖层——然后选择Youtube,文本,等-没有张贴的b/c后将是太大-但让我知道,如果你想看到的code@TDeBailleul你的建议很有道理,而且很有效-我用
    取消
    按钮将我带回
    xtype:homepanel
    ,这是一个包含博客帖子的列表,链接到一个控制器,用全文推送一个视图——但是当我从
    Youtube
    返回到
    homepanel
    时,homepanel上没有任何点击(点击)——有什么想法吗?如果应用程序不是太大,我建议你创建一个。如果你这样做了,我会看一看。dave我一直在避免使用
    id
    s,但是没有(至少我在其中编码过)——我的
    主视图扩展了一个选项卡面板,并且包含
    xtype:homepanel
    ——它扩展了一个导航视图——从这里可以转到
    youtube视图
    ,正如您所指出的,该视图应该被推/弹出,而不是扩展——如果我理解正确,请告诉我Orry dave,它不在我当前的代码中(它仍然不工作)--由于错误,我将其留在了OP中这给了我
    'uncaughttypeerror:Object ext viewport没有方法“hide”
    @torr你能试着把hide:function()放在tapClose:function()的上方吗?我又编辑了一次,这次我用导航栏推视图。试试看。vikal可以工作,但有两个问题-[1]推送面板顶部有一个额外的导航栏;[2] 在推送视图上,水龙头仍然没有启动-