微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Angular-变更检测

1、angular如何以及何时根据数据模型更新html 答:angular使用zone.js来进行变更检测,zone是一个跨异步任务持久化存在的执行上下文,同时angular提供了ngzone服务类,来在组件中使用zone的能力     a、执行时机:会在angular组件初始化、触发DOM事件、数据请求、宏任务、微任务、其他异步操作(websocket.onmessage\canvas.toBlob)时进行数据的变更检测     b、获取上下文以及生命周期:可以通过Zone.current来获取当前的上下文,可以通过Zone.current.fork()方法配置对应的生命周期钩子     c、手动触发变更检测:ngzone.run()方法的回调中执行一些异步函数,并在方法执行后的合适时间触发变更检测     d、手动指定不触发变更检测:ngzone.runOutSideAngular()方法的回调中添加一些不需要触发变更检测的函数        2、猴子补丁 答:在运行时添加修改函数认行为,并且不会更改源代码的技术,而zone.js对DOM事件、HTTP请求、宏任务、微任务以及其他异步任务进行了包装,在监听到事件时会触发angular的tick()方法,并在tick()方法内部调用detectChange()方法实现变更检测   3、配置zone.js不需要监听的事件或者操作 答:定义zone-flags.ts文件,并在polyfills.ts文件中import 'zone.js';语句之前导入,zone-flags.ts文件内容定义方式如:     (window as any).__Zone_disable_requestAnimationFame = false; // 过滤需要监听的任务     (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove'];  // 过滤需要监听的DOM事件     注意:配置文档:https://github.com/angular/angular/blob/master/packages/zone.js/MODULE.md

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐