0

我添加了一个导航视图(称为MainView)和一个按钮。当我单击按钮时,将显示下一个视图(在以下示例中,它称为 DASHBOARD)。当我单击应显示另一个视图时,仪表板中有另一个按钮。该视图的名称是 MOREDETAILS。

但是,当我单击 DASHBOARD 视图中的按钮时,MOREDETAILS 视图不会添加到导航视图中,甚至不会显示。

我该如何解决这个问题???

我的代码:

主视图

Ext.define('MyApp.view.MainView', {
extend: 'Ext.navigation.View',

config: {
    fullscreen: true,
    id: 'MainView',
    ui: 'light',
    modal: true,
    useTitleForBackButtonText: true,
    items: [
        {
            xtype: 'formpanel',
            title: 'TEST',

            layout: {
                type: 'card'
            },
            items: [

                {
                    xtype: 'button',
                    docked: 'bottom',
                    itemId: 'mybutton9',
                    ui: 'confirm',
                    iconAlign: 'right',

                    text: 'Click'
                }
            ]
        }
    ],
    listeners: [
        {
            fn: 'onMybutton9Tap',
            event: 'tap',
            delegate: '#mybutton9'
        }
    ]
},

onMybutton9Tap: function(button, e, eOpts) {
    this.push(Ext.create('MyApp.view.Dashboard',{
        title:'Dashboard'   
    }));
}

});

仪表板

Ext.define('MyApp.view.Dashboard', {
    extend: 'Ext.form.Panel',

    config: {
        id: 'DashboardID',
        layout: {
            animation: 'slide',
            type: 'card'
        },
        modal: true,
        scrollable: 'vertical',
        items: [
            {
                xtype: 'list',
                id: 'ListItem',
                scrollable: true,
                itemTpl: [
                    '<div> blah blah</div>'
                ],
                store: 'MyJsonPStore',
                items: [
                    {
                        xtype: 'button',
                        docked: 'top',
                        itemId: 'mybutton10',
                        text: 'MyButton10'
                    }
                ]
            }
        ],
        listeners: [
            {
                fn: 'onMybutton10Tap',
                event: 'tap',
                delegate: '#mybutton10'
            }
        ]
    },

    onMybutton10Tap: function(button, e, eOpts) {
        this.push(Ext.create('MyApp.view.MoreDetails',{
            title:'Neeeeee'   
        }));
    }

});

更多细节

Ext.define('MyApp.view.MoreDetails', {
    extend: 'Ext.Panel',

    config: {
        id: 'MoreInfo',
        layout: {
            animation: 'slide',
            type: 'card'
        },
        scrollable: 'vertical',
        items: [
            {
                xtype: 'list',
                itemTpl: [
                    '<div>jhhhjhjhjhjhjh</div>'
                ],
                store: 'MyJsonPStore'
            }
        ]
    }

});
4

1 回答 1

1

onMybutton10Tap,你正在调用pushthis这是一个formpanel,而不是一个navigationview。您需要在调用之前获取对父级的引用push

首先,给你的第一个类一个alias,它允许你使用它来创建它xtype

Ext.define('MyApp.view.MainView', {
    extend: 'Ext.navigation.View',
    alias: 'widget.mainview'
    //...more here
});

然后使用它up来获取对父级的引用xtype

onMybutton10Tap: function(button, e, eOpts) {
    this.up('mainview').push(Ext.create('MyApp.view.MoreDetails',{
        title:'Neeeeee'   
    }));
}
于 2013-07-03T11:39:41.307 回答