Sencha Touch:嵌套列表滚动到返回顶部,如何禁用此功能?

问题描述 投票:0回答:1

我有一个工作嵌套列表。当我通过单击后退按钮导航回来时,它会正确加载上一个列表但是默认似乎将其滚动到顶部。

这很烦人,因为我点击列表项目#50并单击返回,它应该显示位于我所在位置的列表(在项目50处)不会在项目1处向上滚动。它迫使我向下滚动到第50项继续探索我的位置。

那么有没有办法取消嵌套列表的“滚动到顶部 - 背面”行为?任何方式来破解这个代码赞赏

extjs sencha-touch sencha-touch-2
1个回答
1
投票

是的,你可以使用方法scrollToRecord()方法在back上的NestedList事件列表中。像这样

lastActiveList.scrollToRecord(node)

其他方式

您可以使用getScrollable()设置上一个滚动位置。你需要在itemtap上使用backNestedList事件。

  • itemtap上,您将获得当前滚动位置并设置为当前活动列表 list.yPosition = list.getScrollable().getScroller().position.y;
  • 在后退按钮上,您可以再次将相同的上一个滚动位置设置到列表中。 lastActiveList.getScrollable().getScroller().scrollTo(0, lastActiveList.yPosition);

你可以查看工作FIDDLE

代码链

Ext.application({
    name: 'Sencha',

    launch: function() {

        Ext.define('ListItem', {
            extend: 'Ext.data.Model',
            config: {
                fields: ['text']
            }
        });

        Ext.create('Ext.data.TreeStore', {
            model: 'ListItem',

            storeId: 'listItemStore',

            defaultRootProperty: 'items',
            root: {
                items: items
            }
        });

        Ext.create('Ext.NestedList', {

            fullscreen: true,

            store: 'listItemStore',

            listeners: {

                itemtap: function(tree, list, index, target, record, e, eOpts) {
                    list.yPosition = list.getScrollable().getScroller().position.y;
                },

                back: function(btn, node, lastActiveList) {
                    lastActiveList.getScrollable().getScroller().scrollTo(0, lastActiveList.yPosition);
                }
            }
        });
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.