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

时间:2018-09-05 13:19:37

标签: extjs sencha-touch sencha-touch-2

我有一个有效的嵌套列表。 当我通过单击“后退”按钮向后导航时,它将正确加载上一个列表,但默认情况下似乎将其滚动到顶部。

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

那么有什么方法可以取消嵌套列表的“从后滚动到顶部”?任何用赞赏的代码破解它的方法

1 个答案:

答案 0 :(得分: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);
                }
            }
        });
    }
});