解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题


Posted in Javascript onSeptember 27, 2018

Vue使用swiper插件时特别是轮播元素含有动态数据时可能会出现数据为空或者白屏的问题

使用下面的方法可以解决(保证在数据请求之后再渲染页面)

页面结构

<div class="swiper-container">
 <div class="swiper-wrapper">
 <div class="swiper-slide tpOne" v-if="topInfo">
  <-- 此处为绑定数据的轮播元素 -->
  <div class="bannerBox1">
  <div class="l_label" >{{topInfo.label}}</div>
  <div class="l_title" >{{topInfo.title}}</div>
  <div class="l_tips" >{{topInfo.tips}}</div>
  <div class="l_bottom"><span><img src="..." alt=""></span>{{topInfo.bottom}}</div>
  </div>
 </div>
 <div class="swiper-slide"><img src="" alt="" /></div>
 <div class="swiper-slide"><img src="" alt="" /></div>
 <div class="swiper-slide"><img src="" alt="" /></div>
 </div>
 <div class="swiper-pagination"></div>
</div>

初始化方法

//mounted 或者topInfo的值获取到时再调用初始化方法
swiperInit() {
 var mySwiper = new Swiper('.swiper-container', {
  pagination : '.swiper-pagination',
  paginationType : 'bullets',
  autoplay : 2000,
  // loop : true,
 })
},

获取数据

getInfo:function(){
 var _this=this;
 XXX.ajax({
  url: '...',
  success: (r)=> {
  if(!!r.ret){
   _this.topInfo=r.ret;
   //此时获取到数据再显示Swiper
   _this.getFlag=1;
  }
  }
 })
 },

下面再提供一个例子

页面结构

<div class="swBox" v-if="sw_flag&&!!banners.length">
 <div class="swiper-container">
 <div class="swiper-wrapper">
  <div class="swiper-slide" v-for="(banner,index) in banners" :key="index" @click="toNextUrl(banner,index)">
  <img :src="banner.image" alt="" />
  </div>
 </div>
 <div class="swiper-pagination"></div>
 </div>
</div>

初始化方法

swiperInit() {
 var mySwiper = new Swiper('.swiper-container', {
  pagination : '.swiper-pagination',
  paginationType : 'bullets',
  autoplay : 2000,
  observer:true,
  observeParents:false
 })
 },

获取数据

getData:function(){
 var _this=this;
 //此处设置sw_flag变量的目的在于控制swiper显示关闭开关,当数据重新请求时,先关闭swiper,请求完毕数据再重新渲染页面;
 _this.sw_flag=0;
 XXX.ajax({
 url: '...',
 success: (r)=> {
  if(!!r.ret){
  _this.banners=r.ret.banners||"";
  _this.sw_flag=1;
  //此时获取到数据再初始化swiper
  _this.$nextTick(function(){
   if(!!_this.banners.length){
   _this.swiperInit();
   }
  });
  }
 }
 })
},

注:我用的swiper版本是 3.4.2

以上这篇解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery命令汇总,方便使用jquery的朋友
Jun 26 Javascript
Javascript页面添加到收藏夹的简单方法
Aug 07 Javascript
js实现div的切换特效上一个下一个
Feb 11 Javascript
JavaScript常用的弹出广告及背投广告实现方法
Feb 06 Javascript
javascript回调函数的概念理解与用法分析
May 27 Javascript
Vue.js划分组件的方法
Oct 29 Javascript
Vue组件之自定义事件的功能图解
Feb 01 Javascript
微信小程序数据统计和错误统计的实现方法
Jun 26 Javascript
JavaScript生成一个不重复的ID的方法示例
Sep 16 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
Nov 07 Javascript
微信小程序音乐播放器开发
Nov 20 Javascript
vue Cli 环境删除与重装教程 - 版本文档
Sep 11 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
Sep 27 #Javascript
如何在 JavaScript 中更好地利用数组
Sep 27 #Javascript
axios 封装上传文件的请求方法
Sep 26 #Javascript
axios取消请求的实践记录分享
Sep 26 #Javascript
Node.js模拟发起http请求从异步转同步的5种用法
Sep 26 #Javascript
在vue中获取token,并将token写进header的方法
Sep 26 #Javascript
基于axios 解决跨域cookie丢失的问题
Sep 26 #Javascript
You might like
PL-880隐藏功能
2021/03/01 无线电
PHP+ACCESS 文章管理程序代码
2010/06/21 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
jQuery Ajax之load()方法
2009/10/12 Javascript
JavaScript isArray()函数判断对象类型的种种方法
2010/10/11 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
2015/03/13 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
node+experss实现爬取电影天堂爬虫
2016/11/20 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
vuex提交state&amp;&amp;实时监听state数据的改变方法
2018/09/16 Javascript
深入理解js A*寻路算法原理与具体实现过程
2018/12/13 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
2019/01/21 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
配置node服务器并且链接微信公众号接口配置步骤详解
2019/06/21 Javascript
Vue中的this.$options.data()和this.$data用法说明
2020/07/26 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
django模型中的字段和model名显示为中文小技巧分享
2014/11/18 Python
Python中常用信号signal类型实例
2018/01/25 Python
python实现简单图片物体标注工具
2019/03/18 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
关于Keras Dense层整理
2020/05/21 Python
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
2015年度企业工作总结
2015/05/21 职场文书
2016国庆节活动宣传语
2015/11/25 职场文书
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript
python opencv旋转图片的使用方法
2021/06/04 Python
MySQL高级进阶sql语句总结大全
2022/03/16 MySQL
Java 定时任务技术趋势简介
2022/05/04 Java/Android