我在页面上用 ng-repeat 循环输出了 list,通过点击按钮,我又向 list 中新添加了 10 个元素。这时候,列表的 height 应该变高了,我怎么能立刻获取到这个新的高度哩?
Document
- {{item}}
点击按钮后,数据应该是立即改变了,但是数据改变到更新 DOM 还有一段时间。控制台输出的 before 和 after 是一样的。也就是获取 after 的高度时 DOM 还没有更新,如何才能获取到增加后的高度?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
为什么一定要在数据更新完后就取数据?你完全可以先不管他,等你操作视图时在获取数据不就行了。
一般是$apply完成数据到视图的更新。
有时用$digest
$scope.$apply()是触发数据更新,利用 $scope.$watch() 去判断。
注意:不是直接监听数据,第一个参数设置为 function,那么这个 function 会执行多次,总有一次是 DOM 完成更新了执行的。
所以,可以在这个函数里面去做一些事情。
提前记录了一个值:$scope.before,如果后面获取的值和 $scope.before 不相同,说明 DOM 已经更新完毕了,然后就可以做一些操作了。
理解$watch ,$apply 和 $digest --- 理解数据绑定过程
使用$timeout.延迟获取.