解决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 操作Javascript对象和数组的工具函数小结
Jan 22 Javascript
js动态给table添加/删除tr的方法
Aug 02 Javascript
jQuery中fadeOut()方法用法实例
Dec 24 Javascript
jQuery实现页面滚动时动态加载内容的方法
Mar 20 Javascript
利用js查找数组中指定元素并返回该元素的所有索引示例
Mar 29 Javascript
H5上传本地图片并预览功能
May 08 Javascript
bootstrap+jQuery实现的动态进度条功能示例
May 25 jQuery
vue路由嵌套的SPA实现步骤
Nov 06 Javascript
JavaScript事件委托原理与用法实例分析
Jun 07 Javascript
vue .sync修饰符的使用详解
Jun 15 Javascript
关于vue路由缓存清除在main.js中的设置
Nov 06 Javascript
uniapp实现可滑动选项卡
Oct 21 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
PHP 获取远程文件大小的3种解决方法
2013/07/11 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
2015/12/25 PHP
YII框架中搜索分页jQuery写法详解
2016/12/19 PHP
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
2010/05/06 Javascript
JavaScript 计算图片加载数量的代码
2011/01/01 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
jquery实现按Enter键触发事件示例
2013/09/10 Javascript
button没写type=button会导致点击时提交
2014/03/06 Javascript
JavaScript获取Url里的参数
2014/12/18 Javascript
javascript实现不同颜色Tab标签切换效果
2016/04/27 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
详解JavaScript的数据类型以及数据类型的转换
2019/04/20 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
[01:39:42]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
python cumsum函数的具体使用
2019/07/29 Python
python3 logging日志封装实例
2020/04/08 Python
没编程基础可以学python吗
2020/06/17 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
2020/09/03 Python
Python中生成ndarray实例讲解
2021/02/22 Python
英国儿童设计师服装的领先零售商:Base
2019/03/17 全球购物
Fanatics法国官网:美国体育电商
2019/08/27 全球购物
介绍一下grep命令的使用
2015/06/12 面试题
AJAX都有哪些有点和缺点
2012/11/03 面试题
生物医学工程专业学生求职信范文分享
2013/12/14 职场文书
前台接待岗位职责范本
2015/04/03 职场文书
国际贸易实训总结
2015/08/03 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python