document.getElementById对渲染的角度内容不起作用

时间:2016-04-18 21:11:57

标签: javascript angularjs json

欣赏我能得到的所有帮助,因为我还是刚开始有角度的。我试图解决的问题之一是在从外部源获取内容的角度视图完成加载后,将用户滚动到页面中的元素。

查看文档似乎angular.element(document).ready无法正常工作,因为文档可能已准备就绪,但我使用$http.get获取的内联内容可能尚未呈现。

所以我研究了使用$q和承诺,到目前为止我在我的控制器中有这个(为了简洁而剥离了一些东西):

.controller('myController', function($scope, $http, $q) {
  var promises = [];
  var data = ["/json/my-feed-url"];

  // kind of unnecessary but copying boilerplate code...
  data.forEach(function(d) {
    promises.push($http.get(d))
  });

  // wait for json to be loaded
  $q.all(promises).then(function(results){
    results.forEach(function(data,status,headers,config){
      console.log(data,status,headers,config);
      $scope.document_data_inline = data.data.nodes;
    })
  // now once all the data has been read into the document
  // find a tag and scroll to it
  }).then(function() {
    var p = window.location.hash;
    var t = document.getElementById(p);
    console.dir(t);
    // here is where t is always undefined
    // yet I am rendering that element inline through my json
    // which (presumably) since we are chaining this function with 'then'
    // should be rendered at this point as all promises have completed...
    ...

因为我以为我在逻辑上这样做了,所以有点难过。我的json feed包含特殊的锚标记作为内联滚动的参考点,但我调用document.getElementById的行始终返回undefined,即使我可以验证文档是否存在。当然,我可以从控制台运行这个document.getElementById代码,并且每次都可以正常工作,因为文档正文已经组装完毕,但我认为这也是在承诺完成加载后发生的......

非常感谢任何帮助!

由于 - J

0 个答案:

没有答案