我有一个工作嵌套列表。当我通过单击后退按钮导航回来时,它会正确加载上一个列表但是默认似乎将其滚动到顶部。
这很烦人,因为我点击列表项目#50并单击返回,它应该显示位于我所在位置的列表(在项目50处)不会在项目1处向上滚动。它迫使我向下滚动到第50项继续探索我的位置。
那么有没有办法取消嵌套列表的“滚动到顶部 - 背面”行为?任何方式来破解这个代码赞赏
是的,你可以使用方法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);
}
}
});
}
});