Sencha touch sencha touch 2-如何操作历史支持
我想使用路由系统来提供后退按钮支持。我正在显示一个基于记录存储的项目列表。当我处理itemtap eventSencha touch sencha touch 2-如何操作历史支持,sencha-touch,sencha-touch-2,Sencha Touch,Sencha Touch 2,我想使用路由系统来提供后退按钮支持。我正在显示一个基于记录存储的项目列表。当我处理itemtap event函数(列表、索引、目标、记录)时,我会得到一个对所选记录的引用,并将其传递到一个新屏幕,然后实例化并显示该屏幕 在这种情况下,如何指示历史管理器我已移动到新屏幕并启用“后退”按钮。我看到应用程序。重定向到,但我将丢失对我要使用的记录的引用。(redirectTo会将一个新操作推送到历史堆栈中,其中包含记录的主id,但这似乎是多余的,因为在处理重定向时,我需要根据id重新查找记录。) 有没有
函数(列表、索引、目标、记录)
时,我会得到一个对所选记录的引用,并将其传递到一个新屏幕,然后实例化并显示该屏幕
在这种情况下,如何指示历史管理器我已移动到新屏幕并启用“后退”按钮。我看到应用程序。重定向到
,但我将丢失对我要使用的记录的引用。(redirectTo会将一个新操作推送到历史堆栈中,其中包含记录的主id,但这似乎是多余的,因为在处理重定向时,我需要根据id重新查找记录。)
有没有一种直接的方法可以告诉历史对象前进到一个新操作,并启用后退按钮支持?我没有找到更简单的方法。下面是我如何在应用程序中实现它(使用嵌套列表)。 我创建了具有如下路由的控制器:
Ext.define('MyApp.controller.ListItems', {
extend: 'Ext.app.Controller',
config: {
refs: {
nestedList: '.nestedlist'
},
control: {
nestedList: {
itemtap: 'itemSelected'
}
},
routes: {
'item/:id': 'showListItem'
}
},
list: null,
index: null,
target: null,
record: null,
showListItem: function( id ){
var nestedList = this.getNestedList(),
store = nestedList.getStore(),
node = store.getById(id);
if ( node.isLeaf() ){
nestedList.goToLeaf(node);
nestedList.fireEvent('leafitemtap', nestedList, this.list, this.index, this.target, this.record);
} else {
nestedList.goToNode(node);
}
},
itemSelected: function( nl, list, index, target, record ){
this.list = list;
this.index = index;
this.target = target;
this.record = record;
var path = 'item/'+record.data.id;
this.redirectTo(path);
}
});
我还重写了嵌套列表的MTAP方法,因为现在所有列表更改都是通过controller&propper路由完成的
onItemTap: function(list, index, target, record, e){
this.fireEvent('itemtap', this, list, index, target, record, e);
}
希望这会有帮助。
如果你找到更好的方法,请写在这里