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
上一篇:error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file o


下一篇:③.cfssl 签发client 用于集群通讯