微信小程序开发

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

2019-09-23  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读