天天看点

工作开发中遇到的问题注意事项备份(遇到问题会持续更新)

  1. 火狐浏览器兼容性问题: disabled属性会阻止事件冒泡,导致一些复合组件点击事件无效。
  2. 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];
            /*事件处理代码书写位置*/
    
    }
    });
               
  3. 一般获取的html中dom元素高度和宽度都不是最精确的,可以通过以下方法获取到精确数据,如高度:
    var obj = document.getElementById("#domId");
    var oStyle = obj.currentStyle?obj.currentStyle:window.getComputedStyle(obj, null);
    var height = parseFloat(oStyle.height);
               
  4. 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(() => {
      // 逻辑
    });
               

继续阅读