解决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下的26个实用小技巧(jQuery tips, tricks &amp; solutions)
Mar 01 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
Nov 21 Javascript
JavaScript中函数声明优先于变量声明的实例分析
Mar 01 Javascript
javascript 进阶篇1 正则表达式,cookie管理,userData
Mar 14 Javascript
jQuery:节点(插入,复制,替换,删除)操作
Mar 04 Javascript
JavaScript的setAttribute兼容性问题解决方法
Nov 11 Javascript
单击某一段文字改写文本颜色
Jun 06 Javascript
Angular.js之作用域scope'@','=','&amp;'实例详解
Feb 28 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
Apr 07 Javascript
JS实现DOM删除节点操作示例
Apr 04 Javascript
JavaScript对象字面量和构造函数原理与用法详解
Apr 18 Javascript
如何封装Vue Element的table表格组件
Feb 06 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下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
PHP模板解析类实例
2015/07/09 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
Laravel如何实现自动加载类
2019/10/14 PHP
jQuery 数据缓存模块进化史详细介绍
2012/11/19 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
laravel5.4+vue+element简单搭建的示例代码
2017/08/29 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
react中Suspense的使用详解
2019/09/01 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
Python内置函数的用法实例教程
2014/09/08 Python
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
简单的Python的curses库使用教程
2015/04/11 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
python从PDF中提取数据的示例
2020/10/30 Python
python 如何上传包到pypi
2020/12/24 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值
2014/09/15 面试题
艾滋病宣传活动总结
2014/05/08 职场文书
县政协领导班子群众路线教育实践活动四风问题整改方案
2014/10/26 职场文书
毕业论文指导教师评语
2014/12/30 职场文书
python not运算符的实例用法
2021/06/30 Python
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
2021/07/16 HTML / CSS
数据设计之权限的实现
2022/08/05 MySQL