Я просто пытаюсь получить высоту элемента в моем ng-представлении, используя DOM, в моем контроллере AngularJS.
Я получаю Uncaught TypeError: document.getElementsByClassName(...).getElementById is not a function
для следующего кода, расположенного в моем контроллере AngularJS.
// I do a hardcoded timeout for now to wait for ng-view to load.
setTimeout(function(){
var theView = document.getElementsByClassName("view-container")[0].getElementById("myView").getElementsByClassName("container")[0];
}, 10000);
Вот как выглядит мой HTML:
<div class="view-container">
<ng-view class="view-frame ng-scope" autoscroll="" id="myView">
<div class="container ng-scope">
<div class="row">
<!-- content -->
</div>
</div>
</ng-view>
</div>
Я проверял правописание getElementById
много раз. Я упускаю какую-то странную вещь, как AngularJS, ng-view и DOM просто не любят работать вместе? Или есть «угловой» способ получить высоту элемента в моем ng-представлении вместо использования DOM?
getElementById
- это метод дляdocument
.getElementsByClassName()
возвращает массив элементов. Вы не можете вызватьgetElementById
для элемента. - person Antiga   schedule 14.11.2015div
id
иgetElementById
. Или, как сейчас (при условии, что нет других элементов с контейнеромclass
), вы можете отрезать всю первую часть и просто вызватьgetElementsByClassName("container")[0];
. Вам не нужно нацеливаться, а затем повторно нацеливаться. - person Antiga   schedule 14.11.2015<ng-view>
является динамическим, и у меня есть несколькоcontainer
. Я думаю, что мой targetcontainer
всегда является третьим контейнером: я попробую это очень быстро. - person chakeda   schedule 14.11.2015