angular脏检查机制

  机制:

    是angular中双向数据绑定的原理,是通过一个原先的旧值和当前的新值作比较是否相等,如果相等则不会触发脏检查机制,如果不相等则会触发脏检查机制,$$watcher进行监听,触发新老值的替换。

    在angular的程序中,一个以{{}}或者指令绑定的视图,就会在此绑定的视图上有一个$watch事件,将数据中最新的值呈现在界面上,所有的watch储存在$$warcher中,一次脏检查就是调用已从$spply()或者$digest(),遍历检查所有watch,将数据中最新值呈现在桌面上。

  

    $$watcher:是监听或者是$apply()和$digest()之间的通讯桥梁

    $apply()是监听数据变化的方法

    $digest()是执行更改改变后的数据

  性能:  

    脏检查机制会造成性能的浪费,消耗性能,但是不会浪费多的是,angular中ng-if,表达式,多层过滤器(需要循环处理),直接操作DOM元素等会造成程序的性能的大量浪费

原文地址:https://www.cnblogs.com/DJF-Dream/p/8858145.html

时间: 2024-10-11 02:12:48

angular脏检查机制的相关文章

$apply方法(触发脏检查机制)

$swatch监听方法 <!DOCTYPE html> <html><head lang="en"> <meta charset="UTF-8"> <title></title> <script src="../angular-1.5.5/angular.min.js"></script> </head> <body ng-app=&

angularjs脏检查机制

很久没有写点东西了,从今天起,在博客园对自己过往的工作,学习和生活做一些梳理,总结和温故.今天窗外的阳光不那么任性,天空白云点点,蝉鸣依旧嘹亮,安静地坐在阳台上,吹着风,敲击着键盘.于我而言,这就是幸福生活. 转入正题,对angularjs脏检查机制做了个回顾和总结如下: 参考文章:  http://teropa.info/build-your-own-angular/ http://www.cnblogs.com/likeFlyingFish/p/6183630.html http://www

angularjs脏检查

angularjs实现了双向绑定,与vue的defineProperty不同,它的原理在于它的脏检查机制,以下做了一些总结: angular.js介绍 AngularJs是mvvm框架,它的组件是vm组件,scope是vm组件的数据集合 AngularJs通过directive来声明vm的行为,它实现为一个watcher,监听scope的属性的变化,把最新的属性更新UI AngularJs的双向绑定:如:一个是将$scope属性值绑定到HTML结构中,当$scope属性值发生变化的时候界面也发生

Session脏检查及清理缓存机制

今天看hibernate书,看到"理解Session的缓存"这一张脏检查及清理缓存的机制后,突然明白程序中session并非一定要执行update()方法.没有执行update()方法,对象仍会与数据库进行数据交互. Session脏检查及清理缓存机制: Session缓存中对象的属性每次改变时,Session不会立即清理缓存及执行Update SQL,而是会在特定时间清理缓存(执行相应的sql),提交事务. 清理缓存时,会相应的改变对象的状态. Java对象在内存中有四个状态:临时状

脏检查 和 缓存清理机制

Session到底是如何进行脏检查的呢?当一个Customer对象被加入到Session缓存中时,Session会为Customer对象的值类型的属性复制一份快照.当Session清理缓存时,会先进行脏检查,即比较Customer对象的当前属性与它的快照,来判断Customer对象的属性是否发生了变化,如果发生了变化,就称这个对象是“脏对象”,Session会根据脏对象的最新属性来执行相关的SQL语句,从而同步更新数据库. 缓存清理机制 当Session缓存中对象的属性每次发生了变化,Sessi

脏检查及刷新缓存机制

当事务提交时,Hibernate会对Session中持久状态的对象进行检测,判断对象的数据是否发生了改变,这种判断称为脏检查 Session session; Transaction tx; @After public void afterTest(){ tx.commit(); HibernateUtil.closeSession(); } @Before public void initDate(){ session=HibernateUtil.getSession(); tx = sess

脏检查

首先解释一下什么是脏检查:在angular中,数据绑定到html中后,这个数据改变了,需要检查刷新,这就触发了脏检查. Angular中的数据是双向绑定的,那么我们怎么知道数据是否是变化了呢? 1.首先能通过固定的接口才能改变变量的值,比如说只能通过set()设置变量的值,set被调用的时候比较一下就知道了.这种方法的缺点是写法比较繁琐. 2.脏检查,将原对象复制一份,在某个时间,比较现在对象与原对象的值,如果不一样就表明发生了变化,这个策略要保留两份变量,而且要遍历对象,比较每个属性,这样会有

8.29 脏检查笔记

个人理解图 脏检查 Session到底是如何进行脏检查的呢?当一个Customer对象被加入到Session缓存中时,Session会为Customer对象的值类型的属性复制一份快照.当Session清理缓存时,会先进行脏检查,即比较Customer对象的当前属性与它的快照,来判断Customer对象的属性是否发生了变化,如果发生了变化,就称这个对象是“脏对象”,Session会根据脏对象的最新属性来执行相关的SQL语句,从而同步更新数据库. 缓存清理机制 当Session缓存中对象的属性每次发

关于Hibernate脏检查与快照

脏检查 Session到底是如何进行脏检查的呢?当一个Customer对象被加入到Session缓存中时,Session会 为Customer对象的值类型的属性复制一份快照.当Session清理缓存时,会先进行脏检查,即比较Customer对象的当前属性与它的快照,来 判断Customer对象的属性是否发生了变化,如果发生了变化,就称这个对象是“脏对象”,Session会根据脏对象的最新属性来执行相关的SQL语 句,从而同步更新数据库. 缓存清理机制 当Session缓存中对象的属性每次发生了变