解决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编写widget的一些技巧分享
Oct 28 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
Jan 09 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
May 19 Javascript
浅析node.js中close事件
Nov 26 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
Jul 17 Javascript
Express进阶之log4js实用入门指南
Feb 10 Javascript
webpack中使用iconfont字体图标的方法
Feb 22 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
Nov 28 Javascript
JavaScript基于数组实现的栈与队列操作示例
Dec 22 Javascript
vue路由切换之淡入淡出的简单实现
Oct 31 Javascript
JavaScript实现图片合成下载的示例
Nov 19 Javascript
解决vue中provide inject的响应式监听
Apr 19 Vue.js
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+mysql删除指定编号员工信息的方法
2015/01/14 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
2015/04/20 PHP
php递归调用删除数组空值元素的方法
2015/04/28 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
javascript实现的动态添加表单元素input,button等(appendChild)
2007/11/24 Javascript
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
IE下使用cloneNode注意事项分享
2012/11/22 Javascript
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
jQuery把表单元素变为json对象
2013/11/06 Javascript
Ext修改GridPanel数据和字体颜色、css属性等
2014/06/13 Javascript
jQuery中:not选择器用法实例
2014/12/30 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
jquery动画效果学习笔记(8种效果)
2015/11/13 Javascript
iframe中使用jquery进行查找的方法【案例分析】
2016/06/17 Javascript
图片加载完成再执行事件的实例
2017/11/16 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
原生js实现无缝轮播图
2020/01/11 Javascript
Vue性能优化的方法
2020/07/30 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
浅谈python字符串方法的简单使用
2016/07/18 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
世界上最大的街头服饰网站:Karmaloop
2017/02/04 全球购物
下列程序在32位linux或unix中的结果是什么
2014/03/25 面试题
党员公开承诺践诺书
2014/03/25 职场文书
中学社团活动总结
2015/05/07 职场文书
历史博物馆观后感
2015/06/05 职场文书
教师节班会主持词
2015/07/06 职场文书
治庸问责工作总结
2015/08/11 职场文书
感恩教师主题班会
2015/08/12 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL