美文网首页微信小程序开发
小程序中使用components遇到的问题Cannotreadp

小程序中使用components遇到的问题Cannotreadp

作者: 牛哞哞杂记 | 来源:发表于2019-09-23 07:31 被阅读0次

    在小程序中使用components遇到了两个问题:
    问题描述:
    Cannot read property ‘init’ of null ,为null
    出现原因:
    出现的原因是,我在wxml里有if判断,而此时num还没有等于1,所以造成null

    <ec-canvas wx:if="{{num==1}}" id="mychart" ec="{{ ec }}">
    </ec-canvas>
    

    解决办法:
    可以在num为1,也就是if条件成立时,进行selectComponent

     onLoad: function (options) {
        let that = this;
        that.setData({
          num: 1,//num为1
        });
        this.oneComponent = this.selectComponent('#mychart');
        }
    

    补充:
    还有可能出现为null的情况有以下几点:
    1、json里usingComponents名与wxml组件名不一致:

    //test.json
    "usingComponents": {
      "ec-canvas": "../ec-canvas/ec-canvas"
      }
    
     //test.wxml
    <ec-canvas id="mychart" canvas-id="mychart-multi" ec="{{ ec }}"></ec-canvas>
    

    2、通过id设置时,id名不一致,或者不是用‘#’

    //test.js
    this.oneComponent = this.selectComponent('#mychart');
    
    //test.wxml
    <ec-canvas id="mychart" canvas-id="mychart-multi" ec="{{ ec }}"></ec-canvas>
    

    3、通过id设置时,id名不一致,或者不是用‘.’

    //test.js
    this.oneComponent = this.selectComponent('.mychart');
    
    //test.wxml
    <ec-canvas class="mychart" canvas-id="mychart-multi" ec="{{ ec }}"></ec-canvas>
    

    4、就是上面出现过的,存在if条件判断的,满足条件后再selectComponent

    相关文章

      网友评论

        本文标题:小程序中使用components遇到的问题Cannotreadp

        本文链接:https://www.haomeiwen.com/subject/ekpeuctx.html