height使用anguarJS返回0指令内部

时间:2015-08-05 18:10:26

标签: javascript angularjs

我试图获得高度为auto的div的高度。 当我从chrome中查看带有element-inspector的元素时,它会给出一个高度。

问题是,使用console.log时,它返回0.

我尝试过innerHeight和outerHeight都不能工作。

这是我的代码:

var vAlign = angular.module("vAlign", [])
.directive('vAlign', function() {
    return {
        restrict : "AC",
        link: function(scope, e){

            var elementHeight = e.height();
            var parentHeight = e.parent().height();
            var finalHeight = parentHeight - elementHeight /2;

            e.css('marginTop', finalHeight);

            console.log(elementHeight);
        }
    };
});

2 个答案:

答案 0 :(得分:3)

您可以将其放在$timeout中,它将在渲染后运行:

var vAlign = angular.module("vAlign", [])
  .directive('vAlign', function($timeout) {
    return {
        restrict : "AC",
        link: function(scope, e){
            $timeout(function() {
              var elementHeight = e.height();
              var parentHeight = e.parent().height();
              var finalHeight = parentHeight - elementHeight /2;

              e.css('marginTop', finalHeight);

              console.log(elementHeight);
            });
        }
    };
});

答案 1 :(得分:1)

在许多情况下,您遇到竞争条件,而不是尝试var ref = new Firebase('https://benjaminsuch.firebaseio-demo.com/'), arr = $firebaseArray(ref.child('invoices')); arr.$loaded().then(function() { var index = arr.$getRecord('item123423'); console.log('index', index); arr .$remove(index) .then(function() { console.log('item removed') }) .catch(function(error) { console.log('error', error); }); }); 解决方案,您可以利用angular.element $timeout来电。

ready()