nuxt中vue-piczoom使用心得(此插件不支持ie)
会遇到的问题
1、渲染时有时候canvas的高度会为0;
2、每次退出当前路由不会自动清除canvas节点
解决方式
1、绑定@mouseenter事件
<div class="current-pic" v-if="piczooshow" ref="piczoom" @mouseenter="handlePicZoomEnter">
<client-only>
<!-- <picZoom
:url="currentSrc"
></picZoom>-->
<picZoom
id="piczoom77"
:url="picList[acticeIndex].src"
></picZoom>
</client-only>
</div>
当进入时监测canvas的高度,如果为0.使用Promise函数修改1下url的数值,然后再修改回来
//监测放大境功能问题
handlePicZoomEnter(){
const _this=this;
console.log(1);
let index=_this.acticeIndex;//获取当面选中的
if( index == _this.picList.length-1 ){//监测一下 下标是不是 最后1个。是的话变成第一个。一般来说进入页面,自动是0
index=0
}
let domCanvas=document.querySelector('.mouse-cover-canvas');//获取pic-zoom自动生成的canvas节点
let height=domCanvas.height//获取高度
if( !height ){//如果高度为0,则修改下标
new Promise(resolve => {
_this.handleChangeCurrentPic(index+1);
resolve();
}).then(val=>{
//将下标修改回来。自动触发。piczoom组件的高度变化,功能正常放大
_this.handleChangeCurrentPic(index);
})
}
}
2、监测Vue的beforeRouterLeave生命周期,清除canvas节点;
beforeRouteLeave(to,from,next){
let canvasArr=document.querySelectorAll('.mouse-cover-canvas');
canvasArr.forEach((item,index)=>{
document.body.removeChild(item)
})
next()
},
结语:如果有遇到同样问题,如上操作没有解决问题的。。很遗憾,请移步百度。。
版权声明:本文为weixin_44820240原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。