2015-09-09 3 views
0

Я пытаюсь выслушать изменение высоты элемента, но до сих пор я не могу заставить это работать ..... element[0].nextElementSibling.clientHeight возвращает правильное значение при инициализации, но не обновляется. ...

(function() { 
    'use strict'; 
    angular.module('someApp').directive('heightdir', function($window) { 
    return { 
     link: function(scope, element) { 

     // Adjust height. 
     scope.calcCommentsHeight = function() { 
      var _h; 
      if ($window.innerWidth > 768) { 
      _h = $window.innerHeight - 222 - element[0].nextElementSibling.clientHeight; 
      $(element).css('height', _h + 'px'); 
      } 
     }; 

     // Sibling height change. 
     scope.$watch((function() { 
      return element[0].nextElementSibling.clientHeight; 
     }), (function(newValue, oldValue) { 
      if (newValue !== oldValue) { 
      console.log(newValue); 
      } 
     }), true); 

     // window resize. 
     angular.element($window).bind('resize', function() { 
      scope.calcCommentsHeight(); 
     }); 

     // Init. 
     scope.calcCommentsHeight(); 
     } 
    }; 
    }); 

}).call(this); 
+0

, как вы используете эту директиву? – Jorg

ответ

0

Один из вариантов: создать службу для хранения значения одного элемента, а затем прочитать эту службу для второго элемента.

angular.module('whatever.module', []).service('ElementHeight', function() { 
    var height = 0; 
    return { 
     height: function() { return height; }, 
     setHeight: function(newHeight) { height = newHeight } 
    } 
}); 

псевдо Пример кода:

function ThisController(ElementHeight) { 
    // set it to the height of the element, how depends on what you're doing. 
    ElementHeight.setHeight(999,999); 

    // to get the height 
    newHeight = ElementHeight.height; 
} 
Смежные вопросы