angularJS--apply() 和digest()方法

$apply()和$digest()在AngularJS中是两个核心概念,但是有时候它们又让人困惑。而为了了解AngularJS的工作方式,首先需要了解$apply()和$digest()是如何工作的。这篇文章旨在解释$apply()和$digest()是什么,以及在日常的编码中如何应用它们。

探索$apply()和$digest()

AngularJS提供了一个非常酷的特性叫做双向数据绑定(Two-way Data Binding),这个特性大大简化了我们的代码编写方式。数据绑定意味着当View中有任何数据发生了变化,那么这个变化也会自动地反馈到scope的数据上,也即意味着scope模型会自动地更新。类似地,当scope模型发生变化时,view中的数据也会更新到最新的值。那么AngularJS是如何做到这一点的呢?当你写下表达式如{{ aModel }}时,AngularJS在幕后会为你在scope模型上设置一个watcher,它用来在数据发生变化的时候更新view。这里的watcher和你会在AngularJS中设置的watcher是一样的:

<!DOCTYPE html>
<html >
<head>
    <meta  charset="utf-8">
    <title>$scope下的apply()和digest()方法</title>
    <script src="../js/angularjs.js"></script>
    <script src="../js/index6.js"></script>

</head>
<body>

    <div ng-app="" ng-controller="firstController">
        {{date}}
    </div>

</body>
</html>
var firstController=function($scope){
     $scope.date=new Date();
/*    setInterval(function(){
        // 这里虽然触发了时间,但是并没有进行脏检查。可以通过apply()方法;
        $scope.date = new Date();
        },1000);*/
    //上述操作被没有触发一秒钟更新一次date.要改变===》
    // 要么用set方法,要么用脏检查。以ng-开头的都会进行脏检查。

    setInterval(function(){
        $scope.$apply(function(){
            $scope.date = new Date();
        });
    },1000)
    /*    <!-- $scope.$apply()方法可以在angular框架之外执行angular JS
表达式 如:DOM时间、setTimeout、XHR或第三方库-->*/

}

我希望这篇文章解释清楚了$apply和$digest。需要记住的最重要的是AngularJS是否能检测到你对于model的修改。如果它不能检测到,那么你就需要手动地调用$apply()。

时间: 2024-11-14 23:08:13

angularJS--apply() 和digest()方法的相关文章

AngularJS中的digest循环$apply

欢迎大家指导与讨论 : ) 前言 Angular会拓展这个标准的浏览器流程,创建一个Angular上下文.这个Angular上下文指的是运行在Angular事件循环内的特定代码,该Angular事件循环被称作为$digest循环.$digest循环有两个组成部分,分别是$watch列表和$evalAsync列表. 例如,当 <input> 标签绑定了$scope.name属性,为了更新这个视图,Angular需要追踪变化.它是通过给$watch列表添加一个监控函数做到这一点.而$watch列表

通俗理解angularjs中的$apply,$digest,$watch

<!DOCTYPE html> <html lang="zh-CN" ng-app="app"> <head> <meta charset="utf-8"> <title>angular时钟辅助理解$apply,$digest,$watch</title> <link rel="stylesheet" href="../bootstrap.

深入理解Angular中的$apply()以及$digest()

reference:http://blog.csdn.net/dm_vincent/article/details/38705099 $apply()和$digest()在AngularJS中是两个核心概念,但是有时候它们又让人困惑.而为了了解AngularJS的工作方式,首先需要了解$apply()和$digest()是如何工作的.这篇文章旨在解释$apply()和$digest()是什么,以及在日常的编码中如何应用它们. 探索$apply()和$digest() AngularJS提供了一个

【转载】$apply()和$digest()

$apply()和$digest()在AngularJS中是两个核心概念,但是有时候它们又让人困惑.而为了了解AngularJS的工作方式,首先需要了解$apply()和$digest()是如何工作的.这篇文章旨在解释$apply()和$digest()是什么,以及在日常的编码中如何应用它们. 探索$apply()和$digest()AngularJS提供了一个非常酷的特性叫做双向数据绑定(Two-way Data Binding),这个特性大大简化了我们的代码编写方式.数据绑定意味着当View

理解Angular中的$apply()以及$digest()

$apply()和$digest()在AngularJS中是两个核心概念.可是有时候它们又让人困惑. 而为了了解AngularJS的工作方式,首先须要了解$apply()和$digest()是怎样工作的.这篇文章旨在解释$apply()和$digest()是什么,以及在日常的编码中怎样应用它们. 探索$apply()和$digest() AngularJS提供了一个很酷的特性叫做双向数据绑定(Two-way Data Binding).这个特性大大简化了我们的代码编写方式.数据绑定意味着当Vie

[email&#160;protected]理解Angular中的$apply()以及$digest()

$apply() 和 $digest() 在 AngularJS 中是两个核心概念,但是有时候它们又让人困惑.而为了了解 AngularJS 的工作方式,首先需要了解 $apply() 和 $digest() 是如何工作的.这篇文章旨在解释 $apply() 和 $digest() 是什么,以及在日常的编码中如何应用它们. 探索 $apply() 和 $digest() AngularJS 提供了一个非常酷的特性叫做双向数据绑定 (Two-way Data Binding) ,这个特性大大简化了

angular $apply()以及$digest()讲解

重点的东西放上面,说三遍: 记住的最重要的是ng是否能检测到你对于model的修改.如果它不能检测到,那么你就需要手动地调用$apply()! 记住的最重要的是ng是否能检测到你对于model的修改.如果它不能检测到,那么你就需要手动地调用$apply(). 记住的最重要的是ng是否能检测到你对于model的修改.如果它不能检测到,那么你就需要手动地调用$apply(). $apply()和$digest()在AngularJS中是两个核心概念.为了了解AngularJS的工作方式,首先需要了解

angularJs--$apply和$watch,$digest方法的意思

这个视图对应的控制器是 这样的话,这个date变量,是不会发生改变的,没有触发脏检查,所以这时候要$apply方法,所有自定义的方法都要用$apply来触发脏检查 这样那个日期就会变化了 $digest方法是触动脏检查的方法,为什么不直接用这个呢,因为$apply会在执行时,运行一个eval语句,如果出错就会停止执行了,这样保证逻辑的安全性

javascript的apply和call方法的使用详解

一直对javascript的apply和call方法的使用比较模糊,前段时间在研究angularjs的源代码时,发现这两个方法非常的强大,使用的场景非常多,这里做个总结. apply和call都是对某个方法的应用,区别在于apply有两个参数:apply(obj,args),其中obj为方法应用的对象,args为参数数组:call有多个参数,call(obj,arg1,arg2,arg3......),obj和apply的obj一样,而参数则是用逗号隔开,有多少个参数就传多少个.下面以apply