我有一个有效的嵌套列表。 当我通过单击“后退”按钮向后导航时,它将正确加载上一个列表,但默认情况下似乎将其滚动到顶部。
这很烦人,因为说我单击列表项目#50并单击返回,它应该显示列表,该列表位于我在项目1处未向上滚动的位置(在项目50中),这使我向下滚动一直到第50项,继续探索我的位置。
那么有什么方法可以取消嵌套列表的“从后滚动到顶部”?任何用赞赏的代码破解它的方法
答案 0 :(得分:1)
是的,您可以在scrollToRecord()
中的back
事件中为列表使用方法NestedList
。像这样
lastActiveList.scrollToRecord(node)
另一种方式
您可以使用getScrollable()
设置上一个滚动位置。您需要在itemtap
上使用back
和NestedList
事件。
在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);
}
}
});
}
});