二维码生成不了大多都是val
属性没有绑定到值所引起的,在hospital-qrcode
页面有一个反例
可以参考.
这个页面生成不了二维码的主要原因是路由传参的值需要在onLoad
中获取,但事先需要在data()中定义这个对
象,在created
时初始化了对象.生命周期顺序:created->onLoad->qrcode mounted->mouted
...
data() {
patientInfo: {}
}
...
这就造成了`tki-qrcode`组件在`mounted`的时候获取的`val`是`undefined`(patientInfo.qrcode=undefined)
,以下为`tki-qrcode`挂载源码
```javacript
mounted: function () {
if (this.loadMake) {
if (!this._empty(this.val)) { // -> val为undefined,就不会执行_makeCode()函数
setTimeout(() => {
this._makeCode()
}, 0);
}
}
}
```
所以呢,需要给`tki-qrcode`新增一个属性`:onval="true"`,在`onLoad`后`patientInfo`对象有了数据
,`val`会重新绑定值,自动生成二维码.
<view class="qrcode">
<tki-qrcode class="uni-popupTabbar-qrcodeimg" ref="qrcode" cid="hosCode" :val="patientInfo.qcode" :icon="qrcode"
:size="200" unit="upx" :loadMake="true" :onval="true">
</tki-qrcode>
<!-- 反例! 二维码不会生成-->
<tki-qrcode class="uni-popupTabbar-qrcodeimg" ref="qrcode" cid="hosCode" :val="patientInfo.qcode" :icon="qrcode"
:size="200" unit="upx" :loadMake="true" >
</tki-qrcode>
</view>