Angular - 如何从一个页面链接到另一个页面并在不使用id的情况下滚动到离子中的锚点

时间:2016-07-08 08:41:42

标签: javascript angularjs ionic-framework

我正在开发一个离子应用。其中包含我的主页上的文章列表,每篇文章都有一个评论图标,该图标应作为文章页面中评论部分的链接。

如何从该首页链接到文章页面评论部分的锚点?

更新

由于Angular在#之后使用“URL”,因此无法通过id链接到锚点,这在答案中是建议的,所以我正在寻找另一种方法来实现它。 我尝试了几种解决方案,但以下都没有起作用。

在这里,有时我得到一个正确的顶部偏移值,但是当我改为另一个文章页面时,该值保持不变。

这是我所做的代码:

文章列表查看:

<a ng-click="commentLink({{article.id}})">
              <img class="social-images" src="icons/comment.svg"/> {{ article.comments.length }}
            </a>

文章视图:

<a name="comments-section"></a>

控制器:

$scope.commentLink = function(articleId) {
    return $state.go('main.article', {id: articleId}).then(function(state) {
      var position = $ionicPosition.offset(angular.element(document.getElementsByName('comments-section')));
      console.log(position.top);
      $ionicScrollDelegate.scrollTo(position.left, position.top);
    })
  };

我也试过这个,基于这个article,但仍然没有运气:

控制器:

$location.hash('comments-section');
  var handle = $ionicScrollDelegate.$getByHandle('articleDelegate');
  handle.anchorScroll(true);

查看:

<ion-content delegate-handle="articleDelegate">

<a id="comments-section"></a>

1 个答案:

答案 0 :(得分:2)

如果你的评论部分有一个id(例如id =&#34; new-comment&#34;),那么从首页开始,你可以尝试:

<a ng-click="goToComment()">...</a>

在控制器中:

$scope.goToComment = function() {
  return $state.go('whatever the comment state is',           {param:param}).then(function(state) {
    $location.hash('new-comment');
    $ionicScrollDelegate.anchorScroll(true)
  })
 }