Sencha Touch:嵌套列表在返回时滚动到顶部,如何禁用它?
Sencha Touch: Nested list scrolls to top on Back, how can I disable this?
我有一个有效的嵌套列表。
当我通过单击后退按钮向后导航时,它会正确加载上一个列表,但默认情况下似乎将其滚动到顶部。
这很烦人,因为假设我单击列表项 #50 并单击后退,它应该显示位于我所在位置(第 50 项)的列表,而不是向上滚动到第 1 项。它迫使我一直向下滚动到第 50 项以继续探索我所在的位置。
那么有没有办法取消嵌套列表的"scroll-to-top-on-back"行为呢?在代码中破解这个的任何方法表示赞赏
是的,您可以使用方法 scrollToRecord()
method for your list on back
event in NestedList
。像这样
lastActiveList.scrollToRecord(node)
另一种方式
您可以使用getScrollable()
. You need to use itemtap
and back
events on 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);
}
}
});
}
});
我有一个有效的嵌套列表。 当我通过单击后退按钮向后导航时,它会正确加载上一个列表,但默认情况下似乎将其滚动到顶部。
这很烦人,因为假设我单击列表项 #50 并单击后退,它应该显示位于我所在位置(第 50 项)的列表,而不是向上滚动到第 1 项。它迫使我一直向下滚动到第 50 项以继续探索我所在的位置。
那么有没有办法取消嵌套列表的"scroll-to-top-on-back"行为呢?在代码中破解这个的任何方法表示赞赏
是的,您可以使用方法 scrollToRecord()
method for your list on back
event in NestedList
。像这样
lastActiveList.scrollToRecord(node)
另一种方式
您可以使用getScrollable()
. You need to use itemtap
and back
events on 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);
}
}
});
}
});