【发布时间】:2016-06-15 02:49:11
【问题描述】:
我正在从我的服务器获取一些数据并通过 Angular 双向绑定更新 DOM。但是它没有按预期工作,我需要将它包装在一个丑陋的 setTimeout 函数中,以便 DOM 有时间更新。
$http.post('myBackend.php', someData)
.then(function(res){
$scope.data = res.data;
doStuffWithDOMElements(); // Does not work
});
虽然这有效:
$http.post('myBackend.php', someData)
.then(function(res){
$scope.someDataToPopulateDOMwith = res.data;
setTimeout(function(){ doStuffWithDOMElements();}, 50); // Yup, works
});
在没有超时的情况下给出错误的行“无法正确读取null”是这样的:
let y_0 = document.getElementById("l_0").offsetTop;
在我的 index.html 中
<div id="l_{{$index}}" ng-repeat = "x in data"></div>
这很奇怪。包裹在 Angular“事件”中的每个 DOM 元素不应该自动更新吗? $scope.$apply() 不起作用,也不应该是必需的。这里有什么问题?
【问题讨论】:
标签: javascript html angularjs dom