sencha touch 2 - 如何操纵历史支持

时间:2012-05-07 23:11:48

标签: sencha-touch sencha-touch-2

我想使用路由系统来提供后台按钮支持。我正在显示基于唱片店的项目列表。当我处理itemtap事件function(list, index, target, record)时,我得到对所选记录的引用,我将其传递给我实例化并显示的新屏幕。

在这种情况下,我如何指示历史记录管理员我已移动到新屏幕并启用后退按钮。我看到application.redirectTo但我会失去对我想要使用的记录的引用。 (redirectTo会将一个新动作推送到包含记录主ID的历史堆栈中,但这似乎是多余的,因为我需要在处理重定向时根据id重新找到记录。)

有没有直接的方法告诉历史对象前进到新的操作并启用后退按钮支持?

1 个答案:

答案 0 :(得分:1)

我没有找到如何更容易地做到这一点。这是我在我的应用程序中使用嵌套列表的方式。 我用这样的路由创建了控制器:

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);
    }
});

我还覆盖了所有列表更改的嵌套列表的onItemTap方法,现在通过控制器& propper routing。

onItemTap: function(list, index, target, record, e){
    this.fireEvent('itemtap', this, list, index, target, record, e);
}

希望它会有所帮助。 写在这里,如果你找到更好的方法,请。