当我从目的地链接返回时,如何在列表组中保持该位置
How can I mantain the position in a list group when I go back from a destination link?
用bootstrap开发一个angularjs应用程序,我在承诺后生成了一个web。然后,有一个带有链接项目的长列表组。此列表是用ng repeat生成的。
当我点击一个项目然后返回时,我失去了我在列表中的位置,它会将我发送到列表的顶部。
我怎样才能回到原来的位置?
这里有一些代码:
<div class="list-group">
<a id="{{pos.id}}" class="list-group-item" bindonce ng-repeat="pos in elements" ng-click="go('/otherPlace/{{pos.id}}')">
<h4 class="list-group-item-heading" bo-bind="pos.id"></h4>
<span class="list-group-item-text" bo-bind="pos.description"></span>
</a>
</div>
我在列表的每个元素中都有ID(位置ID),但我不知道如何将卷轴放在特定的ID中。如果我使用传统格式(URL#id)构建URL,则不会发生任何事情。
在目的地url有一个返回按钮。这是代码:
$scope.returnToMainPage(){
$window.history.back();
}
中也解决了类似的问题https://stackoverflow.com/a/29760881/4679838
基本上,如果你的web是在promise之后生成的,或者你的操作(滚动)依赖于DOM,那么你必须在一个有角度的摘要循环之后执行你的函数。
当你点击列表中的一个元素时,你必须存储scrollTop信息。为了做到这一点,请更改ng点击行为:
ng-click="saveScrollTopAndGoToURL ('/otherPlace/{{pos.id}}')"
这就是功能的实现:
$scope.saveScrollTopAndGoToURL = function (destinationUrl)
{
$rootScope.scrollTop = document.body.scrollTop;
$location.path(destinationUrl);
}
然后,当你从目的地URL返回时,你必须恢复它
$scope.returnAndRestoreScrollTop = function() {
$window.history.back();
$timeout(function() {
document.body.scrollTop = $rootScope.scrollTop;
}, 500, false); // There is a 500 ms delay before executing the function.
};
相关文章:
- 修复列表的绝对位置(li's隐藏在前两个后面)
- 我如何才能获得Facebook在边界内的位置列表
- 生成ACF标记位置的数组(元素列表后缺少])
- jQuery拖动到相对位置的可排序列表中时出现可拖动辅助对象位置问题
- 获取可滚动列表中第一个可见项的位置
- 正在获取列表项位置()
- 单击下拉列表时保持滚动位置(javascript)
- 如何根据从角度下拉列表中选择的值路由到不同的位置
- 根据angularjs中画布上的位置对列表项进行排序
- 当我从目的地链接返回时,如何在列表组中保持该位置
- 无序列表 jQuery 在固定位置显示列表中的选定项
- 如何通过单击页面上的任意位置关闭下拉列表
- 为什么从位置哈希中选择下拉列表在 Chrome 上有效,但不适用于 Firefox、IE 或 Safari
- 默认情况下,在 angularjs 中选择下拉列表中的最后一个位置显示占位符
- 在使用可排序排序期间/之后显示使用 JSON 创建的列表中的项目位置
- 下拉搜索菜单列表不会丢弃在应有的位置
- 使用 ng 重复从可排序列表中获取每个项目的位置
- 为什么这些列表项的位置不正确
- 使用每个项目在KnockoutJS中创建编号列表's在可观测数组中的位置
- 在jQuery UI Datepicker中交换月/年选择列表位置