- 火狐浏览器兼容性问题: disabled属性会阻止事件冒泡,导致一些复合组件点击事件无效。
- echart的柱状图数据为0时,无法通过点击事件触发交互,需要通过注册其它事件处理:
工作开发中遇到的问题注意事项备份(遇到问题会持续更新) this.echartsIntance.getZr().on('click',params=>{ const pointInPixel= [params.offsetX, params.offsetY]; if (this.echartsIntance.containPixel('grid',pointInPixel)) { let xIndex=this.echartsIntance.convertFromPixel({seriesIndex:0},[params.offsetX, params.offsetY])[0]; /*事件处理代码书写位置*/ } });
- 一般获取的html中dom元素高度和宽度都不是最精确的,可以通过以下方法获取到精确数据,如高度:
var obj = document.getElementById("#domId"); var oStyle = obj.currentStyle?obj.currentStyle:window.getComputedStyle(obj, null); var height = parseFloat(oStyle.height);
- angular的脏检查几种方式内容:
一般的检测机制调用方式: Angular不仅可以让开发者设置变化检测的策略,还可以让开发者获取变化检测对象引用ChangeDetectorRef,手动去操作变化检测。变化检测对象引用给开发者提供的方法有以下几种: markForCheck():将检查组件的所有父组件所有子组件,即使设置了变化检测策略为onPush detach():将变化检测对象脱离检测对象树,不再进行变化检查;结合detectChanges可实现局部变化检测 detectChanges():将检测该组件及其子组件,结合detach可实现局部检测 checkNoChanges(): 检测该组件及其子组件,如果有变化存在则报错,用于开发阶段二次验证变化已经完成 reattach():将脱离的变化检测对象重新链接到变化检测树上
特殊的检测机制调用(如排除某部分逻辑不需要自动检测,或启用某部分异步处理逻辑自动检测): import { NgZone } from '@angular/core'; constructor( private zone: NgZone ) { } 调用runOutsideAngular方法,Angular不会对里面的变化进行跟踪: this.zone.runOutsideAngular(() => { // 逻辑 }); 想让Angular跟踪异步处理逻辑的变化,用其提供的run方法: this.zone.run(() => { // 逻辑 });