vue-awesome-swiper中的数据异步加载
<template>
<div>
//第一个轮播 加了v-if 判断,可以实现 loop 轮循
<swiper v-if="gglist.length>1" :options="swiperOption" ref="mySwiper" class="swiper-box">
<!-- slides -->
<swiper-slide v-for="m in gglist">{{m}}</swiper-slide>
<div class="swiper-pagination" slot="pagination"></div>
<div class="swiper-button-prev" slot="button-prev"></div>
<div class="swiper-button-next" slot="button-next"></div>
</swiper>
////第二个轮播 没加判断 不能实现loop 可试试看
<swiper :options="swiperOption" ref="mySwiper2" class="swiper-box">
<!-- slides -->
<swiper-slide v-for="m in gglist">{{m}}</swiper-slide>
<div class="swiper-pagination" slot="pagination"></div>
<div class="swiper-button-prev" slot="button-prev"></div>
<div class="swiper-button-next" slot="button-next"></div>
</swiper>
</div>
</template> <script>
//前提你已经下载好vue-awesome-swiper,swiper.min.css 引入
import Vue from 'vue'
import VueAwesomeSwiper from 'vue-awesome-swiper'
import 'swiper/dist/css/swiper.min.css'
Vue.use(VueAwesomeSwiper) export default{
components: {
swiper:VueAwesomeSwiper.swiper,
swiperSlide:VueAwesomeSwiper.swiperSlide
},
data(){
return{
//配置
swiperOption: {
loop : true,
speed: 900,
notNextTick: true,
autoplay:true,
preloadImages: false,
pagination: {
el: '.swiper-pagination',
},
paginationClickable :true,
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
},
gglist:[],//存放的数据list,数据的获取是异步的 }
},
beforeCreate:function(){ },
created:function(){ },
beforeMount: function () { },
computed: {
swiper() {
return this.$refs.mySwiper.swiper
}
},
mounted:function(){
setTimeout(function(){
this.gglist = response.data.pl;
},10);
})
}
}
</script>
需求:需要异步的获取数据并加载到现在轮播图中,因为是异步加载的,在数据还没有插入到dom中,swiper已经初始化完毕,因为也没找到重新初始化的方法,所以就会出现一个当配置loop的时候却无法生效,当使用v-if的时候就可以解决,这个问题,有了图片才去加载这个dom,才去初始化轮播就可以避免swiper初始化的先后顺序;
if(this.infoData.picture.length>0){
// 轮播图相关配置
this.swiperOptionTop.loopedSlides = this.infoData.picture.length;
this.swiperOptionThumbs.loopedSlides = this.infoData.picture.length;
// 两个轮播相互绑定
this.$nextTick(() => {
const swiperTop = this.$refs.swiperTop.swiper;
const swiperThumbs = this.$refs.swiperThumbs.swiper;
swiperTop.controller.control = swiperThumbs;
swiperThumbs.controller.control = swiperTop;
});
}
vue-awesome-swiper的dom例子:https://surmon-china.github.io/vue-awesome-swiper/
后来因为项目需要,不需要轮播,最后去掉轮播,发现缩略图控制的效果一直不太好,活动页第一个不是在最前面,最后页放弃了这样使用vue-awesome-swiper;
然后尝试直接使用swiper4.0,在vue项目中:
1、cnpm i swiper --save -dev ;
2、之后再需要的页面引入:import Swiper from 'swiper' import 'swiper/dist/css/swiper.css'
3、
<div style="width:50%;height: 486px;">
<div v-show="infoData.picture.length==0" class="noImg"></div> <div v-show="infoData.picture.length > 0" class="swiper-container gallery-top">
<div class="swiper-wrapper">
<div class="swiper-slide" v-for="(url, index) in infoData.picture" :key="index">
<img class="detailImg" referrerpolicy="no-referrer" :src="url"/>
</div>
</div>
</div>
<div v-show="infoData.picture.length > 0" class="swiper-container gallery-thumbs">
<div class="swiper-wrapper">
<div class="swiper-slide" v-for="(url, index) in infoData.picture" :key="index">
<img class="detailImg" referrerpolicy="no-referrer" :src="url"/>
</div>
</div>
<div class="swiper-button-prev" slot="button-prev"><i class="iconfont iconzuo" style="color: #FFFFFF;font-size: 14px;"></i></div>
<div class="swiper-button-next" slot="button-next" ref="nextbtn"><i class="iconfont iconyou" style="color: #FFFFFF;font-size: 16px;"></i></div>
</div> </div>
4、在mounted里面:
var galleryThumbs = new Swiper('.gallery-thumbs', {
spaceBetween: 10,
slidesPerView: 4,
freeMode: false,
watchSlidesVisibility: true,
watchSlidesProgress: true,
observer:true,
});
var galleryTop = new Swiper('.gallery-top', {
spaceBetween: 10,
observer:true,
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
thumbs: {
swiper: galleryThumbs
}
});
5、这样一般就可以使用了,我的废了老大劲在处理一个弱智问题,最后只因为我之前在css样式上写了这个,导致缩略图的激活状态一直不正确;手残
.gallery-thumbs .swiper-slide-active {
opacity: 1;
}
6、改成这样就可以正常的使用了:
.gallery-thumbs .swiper-slide-thumb-active {
opacity: 1;
}
不一定非得使用vue-awesome-swiper插件,还可以直接使用swiper像上面那样
vue-awesome-swiper中的数据异步加载的更多相关文章
- android的progressDialog 的使用。android数据异步加载 对话框提示
在调用的Activity中定义一个全局的 progressDialog 点击按钮的时候调用下面这句 progressDialog = ProgressDialog.show(SearchActivit ...
- Vue(基础七)_webpack(webpack异步加载原理)
---恢复内容开始--- 一.前言 1.webpack异步加载原理’ 2.webpack.ensure原理 ...
- Java 爬虫遇上数据异步加载,试试这两种办法!
这是 Java 爬虫系列博文的第三篇,在上一篇 Java 爬虫遇到需要登录的网站,该怎么办? 中,我们简单的讲解了爬虫时遇到登录问题的解决办法,在这篇文章中我们一起来聊一聊爬虫时遇到数据异步加载的问题 ...
- EF如何操作内存中的数据以及加载相关联表的数据:延迟加载、贪婪加载、显示加载
之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需要用的,这个系列讲讲如何使用EF操作数据库.老版本的EF主要是通过Ob ...
- 小程序中使用ECharts 异步加载数据
官网例子都是同步的,怎么引入及同步demo请移步官网 <view class="container"> <ec-canvas id="mychart-d ...
- Vue中router路由异步加载组件-优化性能
何时使用异步加载组件 当首页app.js文件太大时,可以拆分组件异步加载,如果app.js文件很小时,不建议使用异步加载组件,因为异步加载组件时每次都要发送一个HTTP请求,这样的代价远比首页一次性加 ...
- Angular4中利用promise异步加载gojs
GoJS是一个实现交互类图表(比如流程图,树图,关系图,力导图等等)的JS库 gojs提供了angular的基本例子,不过是离线版 https://github.com/NorthwoodsSoftw ...
- Android学习笔记_36_ListView数据异步加载与AsyncTask
一.界面布局文件: 1.加入sdcard写入和网络权限: <!-- 访问internet权限 --> <uses-permission android:name="andr ...
- android 数据异步加载
public class MainActivity extends Activity { ListView listView; File cache; //访问其他线程在当前线程中存放的数据 Hand ...
随机推荐
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [下篇]
由于ASP.NET Core框架在本质上就是由服务器和中间件构建的消息处理管道,所以在它上面构建的应用开发框架都是建立在某种类型的中间件上,整个ASP.NET Core MVC开发框架就是建立在用来实 ...
- Winform中使用Timer实现滚动字幕效果(附代码下载)
场景 效果 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新建一个Fo ...
- iOS---OBJC_ASSOCIATION_ASSIGN可能引起的Crash
//OBJC_ASSOCIATION_ASSIGN类似于我们常用的assign,assign策略的特点就是在对象释放以后,不会主动将应用的对象置为nil,这样会有访问僵尸对象导致应用崩溃的风险.为了解 ...
- centos7网口添加IP,修改默认路由永久地址生效
1永久增加ip地址和路由 网卡永久添加ip地址 注释:ens192为管理地址网卡,请根据实际情况进行修改,网关以192.168.160.1为例 复制一份网卡配置文件命名为ifcfg-ens192:1 ...
- 写完代码就去吃饺子|The 10th Henan Polytechnic University Programming Contest
河南理工大学第十届校赛 很久没有组队打比赛了,好吧应该说很久没有写题了, 三个人一起玩果然比一个人玩有趣多了... 前100分钟过了4题,中途挂机100分钟也不知道什么原因,可能是因为到饭点太饿了?, ...
- 集合系列 Queue(十):LinkedList
我们之前在说到 List 集合的时候已经说过 LinkedList 了.但 LinkedList 不仅仅是一个 List 集合实现,其还是一个双向队列实现. public class LinkedLi ...
- 在ubuntu18.04上使用OpenSSL生成自签名认证基本流程
为了使系统支持https模式,首先我们要使能ssl模式. 命令如下: sudo a2enmod ssl sudo systemctl restart apache2 接下来我们要生成一个SSL/TLS ...
- Java 9 ← 2017,2019 → Java 13,来看看Java两年来的变化
距离 2019 年结束,只剩下 33 天了.你做好准备迎接 2020 年了吗? 一到年底,人就特别容易陷入回忆和比较之中,比如说这几天的对比挑战就火了! 这个话题登上了微博的热搜榜,也刷爆了朋友圈, ...
- js 实现ReplaceAll 的方法
JS 字符串有replace() 方法.但这个方法只会对匹配到的第一个字串替换. 如下例: <HTML> <HEAD> <TITLE> New Document ...
- Git 在同一台机器上配置多个Git帐号
在同一台机器上配置多个Git帐号 By:授客 QQ:1033553122 实践环境 win10 Git-2.21.0-64-bit.exe TortoiseGit-2.8.0.0-64bit.msi ...