Sencha touch Sencha MVC方法中的页面间导航

Sencha touch Sencha MVC方法中的页面间导航,sencha-touch,sencha-touch-2,Sencha Touch,Sencha Touch 2,我是新来的森查触摸。我从MVC模式开始。我想从一个页面导航到另一个页面。在我的控制器中,我编写了一个tap函数。内部的警报框在点击时工作,但不会移动到下一屏幕。我不知道我哪里出错了。请帮忙。 我的app.js如下所示: //<debug> Ext.Loader.setPath({ 'Ext': 'sdk/src' }); //</debug> Ext.application({ name: 'iPolis', requires: [ 'Ext.MessageB

我是新来的森查触摸。我从MVC模式开始。我想从一个页面导航到另一个页面。在我的控制器中,我编写了一个tap函数。内部的警报框在点击时工作,但不会移动到下一屏幕。我不知道我哪里出错了。请帮忙。 我的app.js如下所示:

//<debug>
Ext.Loader.setPath({
'Ext': 'sdk/src'
});
//</debug>

Ext.application({
name: 'iPolis',

requires: [
    'Ext.MessageBox'
],

views: ['Main','mainmenu','journalsearch'],

controllers: [
    'mainmenu'

],

icon: {
    57: 'resources/icons/Icon.png',
    72: 'resources/icons/Icon~ipad.png',
    114: 'resources/icons/Icon@2x.png',
    144: 'resources/icons/Icon~ipad@2x.png'
},

phoneStartupScreen: 'resources/loading/Homescreen.jpg',
tabletStartupScreen: 'resources/loading/Homescreen~ipad.jpg',

launch: function() {
    // Destroy the #appLoadingIndicator element
    Ext.fly('appLoadingIndicator').destroy();

    // Initialize the main view
    Ext.Viewport.add(Ext.create('iPolis.view.Main'));
    Ext.Viewport.add(Ext.create('iPolis.view.journalsearch'));
},

onUpdated: function() {
    Ext.Msg.confirm(
        "Application Update",
        "This application has just successfully been updated to the latest version. Reload now?",
        function() {
            window.location.reload();
        }
    );
}
});
控制器mainmenu.js:

Ext.define("iPolis.view.mainmenu", {
extend: 'Ext.form.Panel',
requires: ['Ext.TitleBar','Ext.form.FieldSet'],
id:'menuPanel',
config: {
    fullscreen:true,





    items: [
        {
            xtype: 'toolbar',
            docked: 'top',
            title: 'iPolis',
            items: [
                {
                    //text:'Back',
                    ui:'back',
                    icon: 'home',
                    iconCls: 'home',
                    iconMask: true,
                    handler: function() {
                        iPolis.Viewport.setActiveItem('menuPanel', {type:'slide', direction:'right'});
                    }
                }]
        },

        {
            xtype: 'fieldset',
            title: 'Menu',
            items: [



                {
                    xtype: 'button',
                    text: '<div class="journal">Journal</div>',
                    labelWidth: '100%',
                    name: '',
                    id:'journal',
                    handler: function() {
                       // iPolis.Viewport.setActiveItem('journalPanel', {type:'slide', direction:'left'});
                    }

                }



            ]
        }







    ]
}



});
Ext.define('iPolis.controller.main菜单'{ 扩展:“Ext.app.Controller”

requires: [''],

config: {
    control: {


        '#journal': {
            tap: 'onJournalTap'
        }


    }
},

init: function() {

},


onJournalTap: function() {


    alert('i am clicked');

   var a = Ext.getCmp('menuPanel');
  a.setActiveItem(Ext.getCmp('journalPanel'));

}



});
在该功能中:

onJournalTap: function() {


    alert('i am clicked');

   var a = Ext.getCmp('menuPanel');
  a.setActiveItem(Ext.getCmp('journalPanel'));

}
尝试使用以下命令:console.log(a),并显示它所记录的内容,我将帮助您


PS:基本上这就是Ext.NavigationView的设计目的。如果您有许多视图,并且只想一次设置一个活动视图,那么让我们将它们全部包含在您的容器中,然后使用setActiveItem(该视图的索引)显示它们。

非常感谢您的回复。关于使用此控制台。log(a),我得到:Ext.apply.create.Class.在编辑器中,它显示了一个警告:未解析函数setActiveItem()。您似乎还有另一个名为Main的视图,请将app/view/Main.js的源代码粘贴到此处,或者您最好向我发送一个源代码的压缩文件,我将帮助您调试:)我已经删除了主菜单。我曾将其用作显示主菜单(即菜单面板)的容器。现在在我的app.js中,我有:var view=Ext.Viewport.add(Ext.create('iPolis.view.mainmenu');现在我可以访问控制器中的视图。因此我可以使用view.push();但如何将另一个面板传递到push()中???????我实际上扩展了“Ext.navigation.View”而不是面板,以使推送工作基本上这就是Ext.NavigationView的设计目的。如果您有多个视图,并且只想一次设置一个活动视图,那么让我们将它们全部包含在容器中,然后使用
setActiveItem(该视图的索引)
onJournalTap: function() {


    alert('i am clicked');

   var a = Ext.getCmp('menuPanel');
  a.setActiveItem(Ext.getCmp('journalPanel'));

}