angular的性能分析 -随记

$watch 的实现原理和性能分析

  • 只有双向绑定的 scope 才会被加入$watch队列,或者手动绑定$watch$scope
  • 所有放在 $scope 中的变量或函数都被加入到了$watch队列当中,每次只要$scope中的一个变量的值发生变化,Angular就会自动调用$apply或者$digest来把所有在$watch队列中的变量或函数都执行一遍,然后把当前值和上一次的值就行比较,如果有变化,就会在执行一遍(一直循环,最多11次),知道没有变化就会停止
  • 任何事件如果调用Angular的context中的函数之后,都会对$watch队列进行对比执行,不管有没有对$scope进行改变,

例如:ng-click 执行了一个函数 $scope.say = function(){ \nothing }, 在这个函数里面没有任何操作,但还是会执行$watch队列

ng-repeat 的原理和性能问题

  • ng-repeat循环中的每一个item都会建立一个单独的scope并对每个scope中的model进行$watch.
  • 这样的话如果有200条数据,每条数据中5个属性要被$watch, 那么就是 200 * 5次,又因为每次脏数据检测至少都需要执行两次来保证所有变化都被应用,那么就是 200 * 5 * 2, 在加上单独的 ng-repeat一个和其他的modeln个,就是 200 * 5 * 2 + 1 + n, 如果这个数据超过2500的话页面就会变得很慢了
  • 所以如果ng-repeat的数据只是用来展示不需要对其进行操作的话就可以取消$watch绑定,可以使用一个Angular的第三方directive: Bindonce.

转载于:https://www.cnblogs.com/wxlevel/p/7454033.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mongoose 联表、及联查询 使用populate

mongoose 中 使用 populate 进行多表联合查询 drawApply new Schema({salesId: { type: Schema.ObjectId, ref: sales },money: Number,status: { type: Number, default: 0 },createTime: { type: Date, default: Date.now } });sales new Schema({name: { type: String, r…

数据泵使用心得

数据泵在数据的导入、导出方面突出了它特有的优势,给数据库管理人员提供了极大的方便expdp导出数据 expdp常用参数介绍ATTACH 连接到现有作业, 例如 ATTACH [作业名]。COMPRESSION 减小有效的转储文件内容的大小关键字值为: (METADATA_ONLY) 和 NONE。CONTENT 指定要…

[2016-03-15]rabbitmq notes

安装 系统:CentOS 6 环境: rabbitmq 依赖的Erlang环境包 wget https://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el6.x86_64.rpm Server:rabbitmq-server安装包 wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.5.7/rabb…

mongoose 定义经纬度数据类型

本来想用Double在mongoose中直接定义经纬度的。但是发现mongoose的数据类型只有下面几种。 String Number Date Buffer Boolean Mixed ObjectId Array Decimal128 Map所以我们使用Decimal128来定义经纬度 const LocationsSchema new mongoose.Schema({latitude: {type: mong…

oracle导入中文数据出现乱码

两种情况下不会乱码1 数据库端的字符集和客户端一致2 数据库端的字符集包含(也可理解为:超集)客户端的字符集例如数据库端是 UTF-8 ,那么无论客户端是ZHS16GBK 还是Big5都可以存入,数据库端返回客户端时会做一次转换。…

VFP参考资料word版

《VFP参考资料word版》下载地址: 网盘下载 转载于:https://www.cnblogs.com/long12365/p/9731452.html

腾讯地图 点聚合

首先,我有一万个理由,不想用腾讯地图,但只有一个理由说服我使用:做微信开发,地图组件需要和微信自带地图保持一致性。今天我做了腾讯地图很多marker点的聚合显示功能,主要参考官方的,下面是地址…

重建AD域控制器的DNS服务器

域控制器上重建AD集成dns区域1. 控制面板->管理工具,打开dns管理器,展开正向搜索区域,右键单击domain.com区域,选择删除,在提示对话框中选择“是”;如果存在 _msdcs.domain.com区域,右键单击…

sonyflake.go

// Package sonyflake implements Sonyflake, a distributed unique ID generator inspired by Twitters Snowflake.//第一位为未使用(实际上也可作为long的符号位),接下来的41位为毫秒级时间,然后5位datacenter标识位&#xff0c…

国内比较好用的5款测试管理工具

做好测试的前提是写好测试用例,写测试用例则需要一款好用的测试管理工具。国外有几款好用的测试管理工具,由于服务器部署在国外,国内访问会比较卡,还有就是语言不是中文的大家用起来也比较困难,这里就不推荐大家使用了…

如何设置Active Directory域控制器

安装第一个域控制器 请依次执行下列步骤,以便创建一个新的域,并在某一服务器上安装Active Directory服务,然后,将该服务器设定为对应于新建域的第一个域控制器: 在开始菜单上单击运行,并在随后出现的对话框…

mysql 转换编码方式

进入mysql 的安装文件夹找到 “ my.ini” 文件 (mysql配置文件) 一、编辑MySql的配置文件 vim /etc/my.cnf 在 [mysqld] 标签下加上三行 default-character-set utf8 character_set_server utf8 在 [mysql] 标签下加上一行 default-character-set ut…

mongodb报错 An error occurred while loading navigation: topology was destroyed

情况描述,关了电脑,第二天查询数据,报错An error occurred while loading navigation: topology was destroyed 我的数据库连接代码如下: var mongoose require(mongoose); mongoose.connect(mongodb://localhost/test); var d…

oracle常用命令收集

第一章:日志管理 1.forcing log switches sql> alter system switch logfile; 2.forcing checkpoints sql> alter system checkpoint; 3.adding online redo log groups sql> alter database add logfile [group 4] sql> (/disk3/log4a.rdo,/disk…