ren*_*han 19 javascript scroll infinite-scroll angularjs
我在angularjs应用程序中滚动有问题.
目前它有2页:第一页是客户列表,您可以选择其中一个并查看其详细信息.第二个是公司列表,它的工作方式相同.
我正在使用面板在它们之间导航$location.path().该应用程序还有一个后退按钮,使用$window.history.back().
当您选择客户或公司列表中的某个项目,然后在按下该按钮后,您将返回到上一页(客户或公司列表)并恢复滚动位置.我正在使用标准$window.history.back()功能,没有实现任何自定义.
但这里出现问题:如果没有向任何方向滚动,只需转到另一个页面(到其他项目列表)滚动位置将不会重置.但如果你只是稍微滚动一下,它的位置就会重置.此外,如果你不使用后退按钮一切正常.
所以,问题是:在使用后转到另一页时我们如何重置滚动位置$window.history.back()?
我也使用infinite-scroll插件,如果重要的话.但即使我关闭它,没有任何改变,所以我猜问题不在于插件.
我不久前遇到了类似的问题,并提出了简单(但不是优雅的解决方案)。
当视图更改时,我已将包装器滚动顶部值存储在范围中。返回时,我在包装器上再次应用该值。
实际上我不记得单击后退浏览器按钮时它的行为如何。你需要检查一下。
更改视图和存储scrollTop值 https://github.com/jedrzejchalubek/Reed/blob/master/src/app/controller/all.js#L20
angular.extend($scope.view, {
panel: false,
section: 'single',
single: el,
scrollPosition: $('#thumbs').scrollTop()
});
Run Code Online (Sandbox Code Playgroud)
返回并重新应用scrollTop值 https://github.com/jedrzejchalubek/Reed/blob/master/src/app/directives/back-to-list.js#L14
scope.$apply(function() {
scope.view.section = 'list';
scope.view.panel = false;
});
$('#thumbs').scrollTop( scope.view.scrollPosition );
Run Code Online (Sandbox Code Playgroud)
项目在github上,大家可以扫描一下。也许这有帮助。https://github.com/jedrzejchalubek/Reed
| 归档时间: |
|
| 查看次数: |
1233 次 |
| 最近记录: |