angularjs ngRepeat table,获取高度错误
加载页面时,我无法获取表格的高度 我试图获取激发事件$viewContentLoaded时的高度,但表的高度等于表标题栏的高度。我的桌子看起来像这样: 如何获得桌子的正确高度?非常感谢 这是我的密码:angularjs ngRepeat table,获取高度错误,angularjs,angularjs-ng-repeat,Angularjs,Angularjs Ng Repeat,加载页面时,我无法获取表格的高度 我试图获取激发事件$viewContentLoaded时的高度,但表的高度等于表标题栏的高度。我的桌子看起来像这样: 如何获得桌子的正确高度?非常感谢 这是我的密码: $scope.$on('$viewContentLoaded', function(){ var elem = angular.element(document.getElementById('ng-repeat-table-test')); console.log(elem.h
$scope.$on('$viewContentLoaded', function(){
var elem = angular.element(document.getElementById('ng-repeat-table-test'));
console.log(elem.height());
});
Chrome Developer工具测量的实际工作台高度为234px。但是,上面的代码打印出100px,这是标题栏的高度
更多代码:
用于呈现表的代码:
<table id="ng-repeat-table-test">
<tr id="title">
<td>Car Types</td>
</tr>
<tr class="row" ng-repeat="car in cars">
<td>{{car.name}}</td>
</tr>
</table>
Angular完成编译时会触发$viewContentLoaded上的一小段代码,这并不意味着浏览器已呈现DOM 因此,在您的例子中,问题是当执行$viewContentLoaded的回调时,表还没有绘制行,这就是为什么您得到了错误的高度 尝试使用$timeout延迟(移动到队列末尾)执行该操作,以便在获得元素高度之前可以操纵DOM
$scope.$on('$viewContentLoaded', function(){
$timeout(function () {
var elem = angular.element(document.getElementById('ng-repeat-table-test'));
console.log(elem.height());
});
});
显示一些代码以接收帮助谢谢提醒。添加了代码。我创建了一个JSFIDLE用于演示,包括html、css和js代码。过来看。谢谢你的帮助。:)谢谢你的帮助。代码运行良好!只是好奇一下,$超时是唯一的解决方案吗?有可能在DOM完成渲染后发现事件火灾吗?我可以考虑其他解决方法,但$timeout可能是最好的。目前不可能知道渲染何时完成,因为。我明白了。我很惊讶没有这样的事件存在。我的意思是这样的活动在某些情况下非常有用。我还担心美元超时。如果表有一个巨大的数据集,并且ngRepeat需要很长时间才能填充,那么$timeout可能无法处理这种情况。这是正确的吗?不必担心,Javascript和DOM呈现是串行的(同一线程),所以当我们用超时重新安排执行时,我们会将这段代码放在队列的末尾,这将保证呈现在队列之前完成。看一看很棒的。很高兴知道$timeout可以在队列末尾重新安排执行。非常感谢你的帮助。今天我从你那里学到了很多。
$scope.$on('$viewContentLoaded', function(){
$timeout(function () {
var elem = angular.element(document.getElementById('ng-repeat-table-test'));
console.log(elem.height());
});
});