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這個數(shù)據(jù)傳遞來的 methods: { _initSwiper() { this.mySwiper = new Swiper('.swiper-container', { autoplay: 5000,//可選選項,自動滑動 }) }, _updateSwiper() { this.$nextTick(() => { this.mySwiper.update(true); //swiper update的方法 }) }, swiperUpdate() { if (this.mySwiper) { //節(jié)點(diǎn)存在 this._updateSwiper(); //更新 } else { this._initSwiper(); //創(chuàng)建 } }, }, watch: { //通過props傳來的數(shù)據(jù) 和 組件一加載節(jié)點(diǎn)就創(chuàng)建成功 二者不是同步,實(shí)時監(jiān)聽的swiper(傳遞的值)的變化 swiper() { this.swiperUpdate(); } }, mounted() { this.swiperUpdate(); //頁面一加載拉去數(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 },
問題:如果單純的調(diào)用_initSwiper的方法,會發(fā)現(xiàn)頁面是不能滾動的,但是頁面隨便修改東西,然后保存的swiper又可以滾動的,這個個原因是初始swiper的節(jié)點(diǎn)沒有創(chuàng)建成功,值頁面有穿進(jìn)去的,一層一層的可以打印swiper的值為空的,當(dāng)修改東西值就能傳遞進(jìn)去的,所以的這里的我們需要通過判斷節(jié)點(diǎn)是否成功來update siwper的方法
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com