页面加载后去锚

时间:2017-01-23 13:07:02

标签: javascript angularjs

如何进行整页渲染然后转到锚标记? 我正在邮件中进行链接,将您链接到直接页面,然后需要转到特定的ID。我通过Angular获取id,所以我需要在尝试转到锚点之前加载页面。

id="{{idtoanchor}}" 

我用角度尝试了什么:

app.controller('MainController', function ($scope, $http, $q, $anchorScroll, $location, $timeout)

首先尝试:

    $timeout(function() {
    var currentURL = (document.URL);
    var result = /[^/]*$/.exec(currentURL)[0];
    $anchorScroll('#'+'result');
  });

第二:

    $timeout(function() {
    $location.hash('id');
    $anchorScroll();
     });

第三个答案建议:

 this.$onInit = function () {
    var currentURL = (document.URL);
    var result = /[^/]*$/.exec(currentURL)[0];
    location.hash = "#" + result;
      };

我似乎无法让这些工作起作用 即使我调用$ timeout,它也会在ng-repeat完成加载之前触发。

1 个答案:

答案 0 :(得分:0)

$ timeout不是一个可靠的解决方案。在角度DOM中,在获取所需数据之后呈现(返回一个promise,确保angular从API获取数据)。因此,在呈现DOM之后运行一些代码,您需要使用角度可用的生命周期钩子。例如:

function MyCmpController($element) {
   var clickHandler = function () {
      // do something
   };
   this.$onInit = function () {
      $element.on('click', clickHandler);
      //or whatever your logic is.
   };
}