Javascript 如何在为每个摘要更新DOM元素后启动回调函数
我想做一个有角度的身体滚动只表。为了简化,我创建了两个表,其中一个表只有标题,另一个表用于主体。body表被包装成一个div,最大高度为300px 当正文表格没有滚动条时,两个表格对齐,但当正文表格有滚动条时,两个表格不对齐。我尝试的是观察body表的clientWidth,每当它改变时,将新的客户机宽度应用到header表,以便这两个表始终对齐 在控制器中,我有Javascript 如何在为每个摘要更新DOM元素后启动回调函数,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我想做一个有角度的身体滚动只表。为了简化,我创建了两个表,其中一个表只有标题,另一个表用于主体。body表被包装成一个div,最大高度为300px 当正文表格没有滚动条时,两个表格对齐,但当正文表格有滚动条时,两个表格不对齐。我尝试的是观察body表的clientWidth,每当它改变时,将新的客户机宽度应用到header表,以便这两个表始终对齐 在控制器中,我有 $scope.$watch(function() { var tbody = $element.find('tbody.sk
$scope.$watch(function() {
var tbody = $element.find('tbody.sku-table-body');
return tbody[0].clientWidth;
}, function(newClientWidth) {
console.log(newClientWidth);
$scope.tableClientWidth = newClientWidth;
});
然后在标题表中,添加ng style=“{'width':tableClientWidth}”
问题是在更新DOM之前调用watch回调。
例如,如果表格中最初只有10行,并且没有滚动条。这两张桌子是对齐的。然后我点击一个按钮加载10条记录,body表上的滚动条出现了,但是newClientWidth仍然是旧的客户端宽度,因为在更新body表之前调用了watch回调。这两张桌子现在不对齐了
我需要的是在angular完成每个摘要周期的DOM更新时启动一个函数来更新标题表宽度。函数可能类似于
function(){
var clientWidth=$('.body table')[0].clientWidth;
$('.header table').width(clientWidth);
}
我看到了$evalAsync和$timeout,看起来它们是一次性执行。我想要的是在angular完成DOM更新后每次启动一个函数
如果您有任何意见,我们将不胜感激。恐怕您唯一的选择是将
$watch
与$evalAsync
组合,并手动跟踪最后一个宽度,将其与当前宽度进行比较,如果不同,则进行同步。退房