小程序中使用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