无法从 AngularJS 中的元素计算偏移高度
Can't calculate offsetHeight from an element in AngularJS
我有以下指令:
app.directive('myObject', function(){
return {
restrict: 'A',
link: function(scope, elem){
console.log(elem[0].offsetHeight);
}
};
});
这基本上是记录其目标元素的offsetHeight
,但它不起作用。我想这是因为当元素没有任何内容时,它会计算高度。
如何在不使用timeout
的情况下解决此问题?这个问题有内置的解决方案吗?
普伦克
问题是ng-repeat
延迟渲染并且在此之前触发了链接函数。您可以通过watcher
来解决此问题,该将评估每个摘要周期elem[0].offsetHeight
值。因此,当ng-repeat
完成时,它呈现它调用摘要循环,并且由于elem[0].offsetHeight
值的变化,它调用其回调。
命令
var app = angular.module('plunker', []);
app.directive('myObject', function(){
return {
restrict: 'A',
link: function(scope, elem){
var calculateHeight = scope.$watch(function(){
return elem[0].offsetHeight;
}, function(newVal, oldVal){
//my awesome code here.
console.log(newVal, oldVal);
calculateHeight(); //de-registering watcher for performance reason
})
}
};
});
在这里演示
你可以做的另一种替代方法是,你可以在ng-repeat元素上放置其他指令,一旦它完成渲染,它将$emit
一个事件,然后我们将在指令中有一个事件侦听器,它将侦听该事件并计算高度。
相关文章:
- 如何计算每个元素's的高度,并将这些值用作函数中的变量
- 使用jquery计算包含另一个带边距元素的元素的高度
- 如何计算缩放后画布的新高度和宽度
- 获取计算高度-Javascript-而不是jQuery
- Chrome和Firefox之间的高度计算不同
- 无法从 AngularJS 中的元素计算偏移高度
- 展开预览(计算高度:函数)
- Div 不会自动计算高度
- 新偏移量更新字体大小后不计算高度
- 根据点击量或数字计算高度
- 调整大小时重新计算高度
- 在TextArea的自动大小上调整计算高度,理想地工作吗?(jsfiddle - updated)
- 为什么$(someElement).height()从来没有正确地为我计算高度
- 元素的大小需要重新计算高度,因为JSON数据被过滤
- 位置相对内容计算高度
- 沙狐不正确地计算高度
- 调整大小和计算高度- bug
- 绝对定位元素的计算高度
- 如何使用jquery计算高度
- 弹出窗口计算高度