像ionic我们可以用route.js去专门管理路由地址,但在sencha touch,由于页面地址固定,只能通过虚拟后退键去实现后退,但Android自带的后退键类似浏览器后退键,点击是直接退出app的,而不是返回上一页。其实在sencha touch也可以通过路由方式记录页面,这样就可用物理后退键去返回了,一个简单的登录注册例子如下:
首先在controller中定义一个专门管理页面切换的文件,这里的关键是routes,它是用来记录当前的地址如下:
Ext.define('app.controller.Main', {
extend: 'Ext.app.Controller',
config: {
views: [],
refs: {
main: 'cardPanel',
},
routes: {
'userRegister': 'userRegister',
'login': 'userLogin',
},
control: {
showView: {
tap: function (t, value) {
this.redirectTo(t.config.goto);
}
}
}
},
/*跳转到注册页*/
userRegister: function () {
this.getMain().pushView('userRegister', '注册');
},
userLogin: function () {
this.getMain().popAllAndPush('userLogin', '登录');
},
});
其次就是我们登录及注册页面的控制器代码,如下:
Ext.define('app.controller.User', {
extend: 'Ext.app.Controller',
config: {
views: ['user.Login'],
models: [],
refs: {
login: 'userLogin [action=login]',
register: 'userLogin [action=register]',
},
control: {
//点击注册
register: {
tap: function () {
this.redirectTo('userRegister');
}
},
//开始登录
login: {
tap: function () {
Ext.Msg.alert('zebinhao');
}
},
}
},
launch: function () {
this.logUserEroor();
},
//登录失败
logUserEroor: function (message) {
var me = this;
if (message) {
this.getMain().showMessage(message);
}
this.redirectTo('login');
},
});
这样就简单的实现了页面与URL地址的联动,具体页面view就自由发挥了。