美文网首页程序员
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关于页面更新

    简介 使用Angular或者Vue的都知道,这两种语言都是操作数据从而促使页面自动更新,但是有的时候即使数...

  • AngularJS 版本演进了解

    AngularJS 1.X 基于 javascript 开发 场景web 页面开发AngularJS 2.X ...

  • AngularJS初探

    Hello World AngularJS 1.x 的网址为 https://angularjs.org/页面上H...

  • AngularJS基础

    AngularJS:AngularJS 是一个JavaScript 框架。它可通过 标签添加到 HTML 页面.(...

  • AngularJS 简介

    AngularJS 是一个JavaScript 框架。它可通过 添加到HTML页面。 AngularJS 通过指令...

  • Angularjs项目常见问题总结

    1.Angularjs项目页面加载两次 使用Angularjs搭的框架,每次刷新页面都加载两次,进行两次数据请求,...

  • vue.js响应式原理解析与实现

    vue.js响应式原理解析与实现。angularjs是通过脏检查来实现数据监测以及页面更新渲染。之后,再接触了vu...

  • vue.js响应式原理解析与实现

    vue.js响应式原理解析与实现。angularjs是通过脏检查来实现数据监测以及页面更新渲染。之后,再接触了vu...

  • 深度解析vue.js响应式原理解析与实现

    vue.js响应式原理解析与实现。angularjs是通过脏检查来实现数据监测以及页面更新渲染。之后,再接触了vu...

  • 前端 资料库

    跟我学AngularJs:AngulaJs开发技巧汇总(持续更新) AngularJS 中文资料+工具+库+Dem...

网友评论

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

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