【问题标题】:Accessing rendered DOM element访问渲染的 DOM 元素
【发布时间】:2018-01-19 05:29:34
【问题描述】:

我正在尝试在 AngularJS 渲染后访问 DOM 元素。

在我的模板中,我有这个 div:

<ion-view view-title="MAP" name="tab-map">
    <ion-content has-tabs="true" style="text-align:center;">
        <div style="width:100%;height:400px;" ng-attr-id="{{'canvas_map_'+place.id}}" class="map"></div>
    </ion-content>
</ion-view>

所以,在模板的控制器中,我试图获取它的新 id:

var mapId = document.querySelector('.map').id;

console.log("Map id: "+mapId);

但不幸的是,我收到了预渲染代码:{{'canvas_map_'+place.id}},我想获得渲染的 ID 名称为“canvas_map_2”...有人可以帮助我吗?

【问题讨论】:

  • 您可以为此使用超时。

标签: angularjs cordova


【解决方案1】:

您可以使用$timeout 和$viewContentLoaded 来实现您的要求

   $scope.$on('$viewContentLoaded', (event) => {
              $timeout(()=> {//When $timeout used , the code inside it is executed in next $digest cycle
                var mapId = document.querySelector('.map').id;
                console.log("Map id: "+mapId);
          },0);
    }

【讨论】:

  • 谢谢,但这是更好的方法还是只是一种解决方法?
  • 你可以使用它。我使用相同的,从来没有任何问题。如果您找到更好的东西,请告诉我
  • 完美!我会做的!
  • 我在看这个话题,anwer的作者推荐使用.directives来实现DOM操作...stackoverflow.com/questions/27129829/…
  • 是的。我的回答范围有限。你的 DOM 操作,比它必须在指令里面。
猜你喜欢
  • 2022-12-10
  • 2014-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-18
  • 2021-09-05
  • 1970-01-01
相关资源
最近更新 更多