我试图获得高度为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);
}
};
});
答案 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()