2014-10-15 3 views
1

У меня есть простая всплывающая директива, там мне нужно найти высоту div.Угловая директива - offsetHeight выходы 0

Когда я вывожу div console.log($elem.find('.reviews-slide-detail')), он показывает мне полный объект, с [0] -> offsetHeight с указанием номера (223).

Но когда я пытаюсь вывести число непосредственно console.log($elem.find('.reviews-slide-detail')[0].offsetHeight);, он показывает 0.

Моего ДИВ не скрыт, ее исправление позиционируется и очень нормально в моделировании.

Кто-нибудь знает причину этой разницы?

EDIT:

Часть директивы:

function resultReviewDirective($timeout, $http, $state, UtilService, ResultService, Session, $window) { 
    return { 
     restrict: 'AEC', 
     replace: true, 
     templateUrl: 'modules/core/templates/result.review.html',   
     link: function($scope, $elem, $attrs){ 


      $scope.reviewFunc.setHeight = function() { 


       console.log($elem.find('.reviews-slide-detail')); 
       console.log($elem.find('.reviews-slide-detail')[0].offsetHeight); 


      }; 

     } 
    }; 
} 


angular.module('core').directive('resultReview', resultReviewDirective); 
+2

Это потому, что вы, вероятно, пытаетесь получить доступ к элементу слишком рано. 'console.log ($ elem.find ('. detail'))' показывает вам полный объект, потому что консоль хранит ссылку на объект, которая автоматически получает обновления при рендеринге, но при выводе 'console.log ($ elem.find (' .detail ') [0] .offsetHeight) 'непосредственно не ссылается и просто выводит значение в это время регистрации. – PSL

+0

Можете вы добавить код для этой директивы? –

+0

@PSL, я запускаю 'console.log' с функцией щелчка, поэтому он не запускается при загрузке страницы, но я все еще получаю ту же проблему, любые идеи? – muudless

ответ

0

Благодаря комментарий PSL в, окружив его $timeout работал.

Смежные вопросы