vue+swiper實(shí)現(xiàn)組件化開(kāi)發(fā)的實(shí)例代碼
swiper的組件
<template>
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide" v-for="item in swiper"><img :src="item.room_src" alt=""></div>
<!--<div class="swiper-slide" v-for="item in test"><img :src="item.room_src" alt=""></div>-->
</div>
</div>
</template>
<script>
import Swiper from 'swiper'
export default {
name: 'swiper',
data() {
return {
mySwiper: null,
// test: [
// "https://rpic.douyucdn.cn/acrpic/171024/288016_0921.jpg",
// "https://rpic.douyucdn.cn/acrpic/171024/748396_0924.jpg",
// "https://rpic.douyucdn.cn/acrpic/171024/453751_0922.jpg",
// "https://rpic.douyucdn.cn/acrpic/171024/79663_0920.jpg"
// ]
}
},
props: ['swiper'], //swiper的就是test這個(gè)數(shù)據(jù)傳遞來(lái)的
methods: {
_initSwiper() {
this.mySwiper = new Swiper('.swiper-container', {
autoplay: 5000,//可選選項(xiàng),自動(dòng)滑動(dòng)
})
},
_updateSwiper() {
this.$nextTick(() => {
this.mySwiper.update(true); //swiper update的方法
})
},
swiperUpdate() {
if (this.mySwiper) { //節(jié)點(diǎn)存在
this._updateSwiper(); //更新
} else {
this._initSwiper(); //創(chuàng)建
}
},
},
watch: {
//通過(guò)props傳來(lái)的數(shù)據(jù) 和 組件一加載節(jié)點(diǎn)就創(chuàng)建成功 二者不是同步,實(shí)時(shí)監(jiān)聽(tīng)的swiper(傳遞的值)的變化
swiper() {
this.swiperUpdate();
}
},
mounted() {
this.swiperUpdate(); //頁(yè)面一加載拉去數(shù)據(jù)創(chuàng)建節(jié)點(diǎn)
}
}
</script>
<style lang="scss" scoped>
.swiper-container {
width: 100%;
height: 4rem;
margin-top: 0.9rem;
.swiper-wrapper {
width: 100%;
height: 100%;
.swiper-slide {
background-size: cover;
width: 100%;
height: 4rem;
img {
width: 100%;
height: 100%;
}
}
}
}
</style>
home.vue 調(diào)用的組件方法
//html
<swiper :swiper="roomList.slice(6,10)" ></swiper>
//js
import swiper from 'components/swiper/swiper'
components: {
swiper
},
問(wèn)題:如果單純的調(diào)用_initSwiper的方法,會(huì)發(fā)現(xiàn)頁(yè)面是不能滾動(dòng)的,但是頁(yè)面隨便修改東西,然后保存的swiper又可以滾動(dòng)的,這個(gè)個(gè)原因是初始swiper的節(jié)點(diǎn)沒(méi)有創(chuàng)建成功,值頁(yè)面有穿進(jìn)去的,一層一層的可以打印swiper的值為空的,當(dāng)修改東西值就能傳遞進(jìn)去的,所以的這里的我們需要通過(guò)判斷節(jié)點(diǎn)是否成功來(lái)update siwper的方法
相關(guān)文章
vue?mixins代碼復(fù)用的項(xiàng)目實(shí)踐
本文主要介紹了vue?mixins代碼復(fù)用的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
vue-resouce設(shè)置請(qǐng)求頭的三種方法
本篇文章主要介紹了vue-resouce設(shè)置請(qǐng)求頭的三種方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
詳解如何在Vue項(xiàng)目中導(dǎo)出Excel
這篇文章主要介紹了如何在Vue項(xiàng)目中導(dǎo)出Excel,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
vue使用Google Recaptcha驗(yàn)證的實(shí)現(xiàn)示例
我們最近的項(xiàng)目中需要使用谷歌機(jī)器人驗(yàn)證,所以就動(dòng)手實(shí)現(xiàn)一下,本文就來(lái)詳細(xì)的介紹一下vue Google Recaptcha驗(yàn)證,感興趣的可以了解一下2021-08-08
vue如何實(shí)現(xiàn)點(diǎn)擊空白區(qū)域關(guān)閉彈窗
這篇文章主要介紹了vue如何實(shí)現(xiàn)點(diǎn)擊空白區(qū)域關(guān)閉彈窗問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
Vue中watch與watchEffect的區(qū)別詳細(xì)解讀
這篇文章主要介紹了Vue中watch與watchEffect的區(qū)別詳細(xì)解讀,watch函數(shù)與watchEffect函數(shù)都是監(jiān)聽(tīng)器,在寫(xiě)法和用法上有一定區(qū)別,是同一功能的兩種不同形態(tài),底層都是一樣的,需要的朋友可以參考下2023-11-11

