Sencha touch sencha touch 2-如何操作历史支持

Sencha touch sencha touch 2-如何操作历史支持,sencha-touch,sencha-touch-2,Sencha Touch,Sencha Touch 2,我想使用路由系统来提供后退按钮支持。我正在显示一个基于记录存储的项目列表。当我处理itemtap event函数(列表、索引、目标、记录)时,我会得到一个对所选记录的引用,并将其传递到一个新屏幕,然后实例化并显示该屏幕 在这种情况下,如何指示历史管理器我已移动到新屏幕并启用“后退”按钮。我看到应用程序。重定向到,但我将丢失对我要使用的记录的引用。(redirectTo会将一个新操作推送到历史堆栈中,其中包含记录的主id,但这似乎是多余的,因为在处理重定向时,我需要根据id重新查找记录。) 有没有

我想使用路由系统来提供后退按钮支持。我正在显示一个基于记录存储的项目列表。当我处理itemtap event
函数(列表、索引、目标、记录)
时,我会得到一个对所选记录的引用,并将其传递到一个新屏幕,然后实例化并显示该屏幕

在这种情况下,如何指示历史管理器我已移动到新屏幕并启用“后退”按钮。我看到
应用程序。重定向到
,但我将丢失对我要使用的记录的引用。(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);
}
希望这会有帮助。 如果你找到更好的方法,请写在这里