Viewer.js第一次点击图片无法显示解决方案(vue使用)

21 篇文章 0 订阅
20 篇文章 0 订阅

Viewer.js是一个大图预览插件。附上官网地址(https://fengyuanchen.github.io/viewerjs/

说明一下我的使用情况。点击图片查看,出大图预览

不需要有预览小图。查看官网文档,下载js文件。引入文件。

<link href="/Scripts/Common/viewer.min.css" rel="stylesheet">
<script src="/Scripts/Common/viewer.min.js"></script>

不需要预览小图的话,src标签不写地址就可以没有预览小图了。

记录一下2个问题。

A:点击多次的时候数据错乱的问题。这是因为一个页面只能有一个viewer,所以每次事件结束需要进行销毁viewer,然后重新新建就可以。

B:异步数据填充的时候,数据拿到的顺序影响了渲染,所以导致第一次点击照片无法显示,但是console.log能打印出自己需要展示的数组(因为console.log不是立即执行的),这是因为顺序问题,如果出现这个问题的话,是第一次new viewer的顺序在拿到数据之前。解决办法在vue里面就是使用this.$nextTick(()=>{}) 

附上代码:

HTML:

 <el-table-column label="照片" align='center' fixed="right">
      <template slot-scope="scope">
           <el-button type="text" size="small" v-on:click="lookDetail(scope.row)">查看</el-button>
      </template>
  </el-table-column>
 
 <div class='elImage' v-show="centerDialogVisible">
        <ul id='viewer'>
            <li v-for="(item,index) in photo1" :key="index">
                <img class="user-avatar" :data-original='item'  src="">
            </li>
        </ul>
    </div>

js:

data(){
    return{
        photo1: [], // 图片地址
    }
},
mounted: function () {
    this.GetAssetList(this.searchForm)   //根据查询条件进来拿到列表
},
methods:{
     GetAssetList(){ //获取table里面的数据,包括照片地址
         
     },
      lookDetail: function (row) {
                var that = this
                that.photo1 = row.photo
                // 必须使用this.$nextTick!否则第一次点击没有图片展示!
                that.$nextTick(function(){
                  var viewer = new Viewer(document.getElementById('viewer'),{
                    url: 'data-original',
                    navbar: false,
                    fullscreen: false,
                    hide:function(){ //在图片消失的时候销毁viewer
                        viewer.destroy()
                    }
                 });
                 viewer.show()
                })
            },
}

以上!

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值