javascript - 如何保证 AngularJS 更新了 DOM?
天蓬老师
天蓬老师 2017-04-10 16:29:06
0
4
262

我在页面上用 ng-repeat 循环输出了 list,通过点击按钮,我又向 list 中新添加了 10 个元素。这时候,列表的 height 应该变高了,我怎么能立刻获取到这个新的高度哩?

<!doctype html>
<html lang="en" data-ng-app="myApp">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        #box {
            width: 100px;
            height: 300px;
            overflow-y: scroll;
        }
    </style>
</head>
<body>

<p data-ng-controller="ScrollCtrl">
    <ul id="box">
        <li data-ng-repeat="item in list">{{item}}</li>
    </ul>

    <button type="button" data-ng-click="add()">Add</button>
</p>

<script src="jquery.min.js"></script>
<script src="angular.min.js"></script>
<script>
    angular.module('myApp', [])
            .controller('ScrollCtrl', function ($scope) {
                $scope.list = [3, 2, 1];


                $scope.boxScrollHeight = function () {
                    var box = angular.element('#box');
                    return box.get(0).scrollHeight;
                };


                $scope.add = function () {
                    console.log('before:', $scope.boxScrollHeight());

                    var last = $scope.list[0];
                    for (var i = 1; i <= 10; i++) {
                        $scope.list.unshift(last + i);
                    }

                    console.log('after:', $scope.boxScrollHeight());
                };
            });
</script>
</body>
</html>

点击按钮后,数据应该是立即改变了,但是数据改变到更新 DOM 还有一段时间。控制台输出的 before 和 after 是一样的。也就是获取 after 的高度时 DOM 还没有更新,如何才能获取到增加后的高度?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!