美文网首页程序员
AngularJs关于页面更新

AngularJs关于页面更新

作者: 全村的希望iOS | 来源:发表于2018-07-14 00:01 被阅读0次

    简介

            使用Angular或者Vue的都知道,这两种语言都是操作数据从而促使页面自动更新,但是有的时候即使数据改变了页面也不会更新,这一节我们探讨什么时候数据更新了但是页面却没更新。        

    第一组组代码

            <html ng-app="myApp">

                    <body ng-controller="myController">

                            {{name}}

                            <button ng-click="change">改变值</button>

                    </body>

                    <script>

                            var app = angular.module("myApp", []);

                            app.controller("myController",["$scope",function($scope){

                                    //我们在页面输出vue

                                    $scope.name = "AnguarJs";

                                    $scope.age = 24;

                                    $scope.change = function() {

                                                $scope.age = 25;

                                                //页面没有用{{}}显示age,这个时候我们点击按钮页面的值由AngularJs变成了new Angular

                                    };

                                    //我们做个定时器来改变页面的name值

                                    setTimeout(function() {

                                                $scope.name = "new Angular";

                                                console.log($scope.name );//输出改变后的值,没问题,但是页面没有更新,为什么呢?往后看,我们加个按钮,点击改变一个跟name不相关的值我们定义为age

                                    },1000)

                            }]);

                    </script>

            </html>

    总结:有这个例子我们可以总结出,非ng-指令的方法不能使Angular的页面更新,由此我们也得出一个结论ajax请求成数据赋值,不会更新页面。

    第二组代码

            <html ng-app="myApp">

                <body ng-controller="myController">

                        {{name}}

                </body>

                <script>

                        var app = angular.module("myApp", []);

                        app.controller("myController",["$scope",function($scope){

                                $scope.name = "AngularJs";

                                setTimeout(function() {

                                        $scope.name = "new Angular";

                                        //手动更新

                                        $scope.apply();//当我们加上这句代码,发现页面更新了,但是这样写会更新$scope里面的所有数据。

                                        $scope.apply(function() {//如此一来我们只更新了name

                                            $scope.name = "new Angular";

                                        });

                                },1000);

                        }])

                </script>

           </html>

    总结:$scope.apply();可以在ajax请求数据之后更新页面。

    属性监听器

            属性监听器是用来监听值的变化,从而可以执行相应的操作

            $scope.$watch(function(newVal,oldVal) {

                    //newVal新值  oldVal旧值

            })

    内置定时器

                $interval(function() {

                        $scope.age += 1;

                },1000)

                $timeout(function() {

                        $scope.name = "new val"

                },1000);

    注意:使用前请先在控制器内注入,并且两种方式都会更新页面。

    总结:ng-指令可以出发页面的更新,ajax请求成功数据直接赋值无法触发页面更新,必须手动更新($scope.apply()),内置定时器可以出发页面的更新。


                                                            不积跬步无以至千里,不积小流无以成江海 

    相关文章

      网友评论

        本文标题:AngularJs关于页面更新

        本文链接:https://www.haomeiwen.com/subject/escepftx.html