如何创建一个“关闭”按钮来隐藏Sencha T2中的当前视图?

时间:2012-09-26 18:31:33

标签: 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', // 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视图,如果可能的话重新加载,以防新帖发布。

不幸的是,这个控制器代码无法正常工作,因为它会引发Object ext-viewport has no method 'hide'错误。

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

的任何建议

3 个答案:

答案 0 :(得分:1)

有一些问题。

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

  2. 不要使用id。这是第二次点击不点火的原因。

答案 1 :(得分:0)


可能这可以帮到你。

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

});

答案 2 :(得分:0)

这就是诀窍:

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