$watch 代表的就是对数据源的监听,当数据源发生变化,就会触发第二个参数的回调函数 $digest 代表触发一个数据源变化的事件 $apply 代表对于$digest的一个封装,他多了一个参数 . $watch 第一个参数就是要监听的数据源 第二个参数就是当监听的数据源发生变化了,触发的一个回调函数,回调函数包含两个参数,分别代表(新值.旧值) $digest 是用来手动触发监听事件的,通常不需要手动触发,而是由$apply来调用 $apply 只是把$digest 做了一次封装,来提供手动…
浏览器事件发生时,会在浏览器的上下文window中执行,而angular有自己的上下文angular content,angular 事件在自己的上下文angular content中执行. $watch $watch组成了双向绑定的一边,在指定的表达式改变时调用,每个作用域都维护了一个监视器列表,被称为$scope.$$watchers.每次你绑定一些东西到你的UI上时你就会往$watch队列里插入一条$watch. <ul> <li ng-repeat="person in…
 壹 ❀ 引 如果有人问,在angularjs中修改模型数据为何视图会同步更新呢,我想大多数人一定会回答脏检查(Dirty Checking)相关概念.没错,在angularjs中作用域(scope)作为链接控制器(controller)与视图(view)之间的桥梁,除了绑定数据监听事件外,一旦有数据发生改变,scope还兼顾了脏检测更新视图的职责,这是我们宏观的理解. 这就引发了一系列的问题,以点击事件为例,为什么在angularjs中用原生click事件达不到更新视图的效果?ng-click…
第一部分:$watch $watch是一个scope函数,用于监听模型变化,当你的模型部分发生变化时它会通知你. $watch(watchExpression, listener, objectEquality); 每个参数的说明如下: watchExpression:监听的对象,它可以是一个angular表达式如'name',或函数如function(){return $scope.name}. listener:当watchExpression变化时会被调用的函数或者表达式,它接收3个参数:…
$watch.$digest.$apply $watch 代表的就是对数据源的监听,当数据源发生变化,就会触发第二个参数的回调函数 $digest 代表触发一个数据源变化的事件 $apply 代表对于$digest的一个封装,他多了一个参数 $watch 第一个参数就是要监听的数据源 第二个参数就是当监听的数据源发生变化了,触发的一个回调函数,回调函数包含两个参数,分别代表(新值.旧值) $digest 是用来手动触发监听事件的,通常不需要手动触发,而是由$apply来调用 $apply 只是把…
最近项目上使用了比较多的angular JS,一直都对它感觉比较陌生,总觉得有点反直觉,这段时间,准备下定决心弄明白,这个框架到底是怎么一回事,以及它的工作原理,生命周期……一点一点的啃完它吧.首先,让我们先来看看$watch.$digest.$apply这三个方法吧! $watch(watchExpression, listener, objectEquality)  Param Type Details watchExpression function() string Expression…
$digest和$apply 在Angular中,有$apply和$digest两个函数,我们刚才是通过$digest来让这个数据应用到界面上.但这个时候,也可以不用$digest,而是使用$apply,效果是一样的,那么,它们的差异是什么呢? 最直接的差异是,$apply可以带参数,它可以接受一个函数,然后在应用数据之后,调用这个函数.除此之外,还有别的区别吗? 在简单的数据模型中,这两者没有本质差别,但是当有层次结构的时候,就不一样了.考虑到有两层作用域,我们可以在父作用域上调用这两个函数,…
关于Javascript函数的apply与call方法的用法,网上的文章很多,我就不多话了.apply和call的作用很相似,但使用方式有区别 apply与call的第一个参数都是一个对象,这个对象就是用来掉包函数中本身的this指向的,也就是替身. 从第2个参数开始,就是传递给这个函数的参数了.apply与call的区别就在这个参数形式上,一个是把所有参数放进一个数组,一个是依次写出即可. 首先说明下:apply接受数组形式的参数集,call是依次写出参数. 蛋疼的是我经常记不住到底是appl…
apply.call 在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向. JavaScript 的一大特点是,函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念. 先来一个栗子: 1 2 3 4 5 6 7 8 9 10 11 function fruits() {}    fruits.prototype = {     color: "red&q…
这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值. apply()接收两个参数:一个参数是在其中运行的作用域,另一个是参数数组(可以是Array实例,也可以是arguments对象). 实例: function sum(num1,num2) { return num1+num2; } function applySum1(num1,num2) { return sum.apply(this,arguments); } function applySum2(nu…