Sencha touch Sencha MVC方法中的页面间导航
我是新来的森查触摸。我从MVC模式开始。我想从一个页面导航到另一个页面。在我的控制器中,我编写了一个tap函数。内部的警报框在点击时工作,但不会移动到下一屏幕。我不知道我哪里出错了。请帮忙。 我的app.js如下所示: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
//<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'));
}