无法垂直滚动,update是有触发的,但是触发前后的高度是一样的……
<template> <div class="home"> <header class="g-header-container"> <home-header></home-header> </header> <me-scroll :data="recommends"> <home-slider /> <home-nav /> <home-recommend @loaded="getRecommends" /> </me-scroll> <div class="g-backtop-container"></div> <router-view></router-view> </div> </template> <script> import HomeHeader from './header'; import HomeSlider from './slider'; import MeScroll from 'base/scroll'; import HomeNav from './nav'; import HomeRecommend from './recommend'; export default { name: 'Home', components: { HomeHeader, HomeSlider, MeScroll, HomeNav, HomeRecommend }, data() { return { recommends: [] }; }, methods: { getRecommends(recommends) { this.recommends = recommends; }, updateScroll() { } } }; </script> <style lang='scss' scoped> @import '~assets/scss/mixins'; .home { overflow: hidden; width: 100%; height: 100%; background-color: $bgc-theme; } </style> <!-- 组件说明 --> <template> <div class='recommend'> <h3 class="recommend-title">热卖推荐</h3> <div class="loading-container" v-if="!recommends.length"> <me-loading inline /> </div> <ul class="recommend-list" v-if="recommends.length"> <li class="recommend-item" v-for="(item,index) in recommends" :key=index> <router-link class="recommend-link" :to="{name:'home-product',params:{id:item.baseinfo.itemId}}"> <p class="recommend-pic"><img class="recommend-img" :src="item.baseinfo.picUrlNew"></p> <p class="recommend-name">{{item.name.shortName}}</p> <p class="recommend-origPrice"><del>¥{{item.price.origPrice}}</del></p> <p class="recommend-info"> <span class="recommend-price">¥<strong class="recommend-price-num">{{item.price.actPrice}}</strong></span> <span class="recommend-count">{{item.remind.soldCount}}件已售</span> </p> </router-link> </li> </ul> </div> </template> <script> import { getHomeRecommend } from 'api/home'; import MeLoading from 'base/loading'; export default { name: 'HomeRecommend', components: { MeLoading }, data() { return { recommends: [], curPage: 1, totalpage: 1 }; }, methods: { updata() { return this.getRecommend(); }, getRecommend() { if (this.curPage > this.totalpage) { return Promise.reject(new Error('没有更多了')); } getHomeRecommend(this.curPage).then(data => { return new Promise(resolve => { if (data) { this.curPage++; this.totalpage = data.totalPage; this.recommends = this.recommends.concat(data.itemList); this.$emit('loaded', this.recommends); resolve(); } }) }); } }, created() { this.getRecommend(); } } </script> <style lang='scss' scoped> @import "~assets/scss/mixins"; .recommend { &-title { position: relative; width: 100%; padding: 10px 0; font-size: $font-size-l; text-align: center; &:before, &:after { content: ''; position: absolute; top: 50%; width: 40%; height: 1px; background-color: #ddd; } &:before { left: 0; } &:after { right: 0; } } &-list { @include flex-between(); flex-wrap: wrap; } &-item { width: 49%; background-color: #fff; box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.12); margin-bottom: 8px; } &-link { display: block; } &-pic { position: relative; width: 100%; padding-top: 100%; margin-bottom: 5px; } &-img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } &-name { height: 36px; padding: 0 5px; margin-bottom: 8px; line-height: 1.5; @include multiline-ellipsis(); } &-origPrice { padding: 0 5px; margin-bottom: 8px; color: #ccc; } &-info { @include flex-between(); padding: 0 5px; margin-bottom: 8px; } &-price { color: #e61414; } &-price-num { font-size: 20px; } &-count { color: #999; } } .loading-container { padding-top: 100px; } </style> <!-- 组件说明 --> <template> <swiper :options='swiperOption' ref="mySwiper"> <swiper-slide> <slot></slot> </swiper-slide> <div class="swiper-scrollbar" v-if="scrollbar" slot="scrollbar"></div> </swiper> </template> <script> import { swiper, swiperSlide } from 'vue-awesome-swiper'; export default { name: 'MeScroll', components: { swiperSlide, swiper }, props: { scrollbar: { type: Boolean, default: true }, data: { type: [Array, Object] } }, data() { return { swiperOption: { direction: 'vertical', sliderPerView: 'auto', freeMode: true, setWrapperSize: true, scrollbar: { el: this.scrollbar ? '.swiper-scrollbar' : null, hide: true } } }; }, watch: { data() { this.update(); } }, mounted() { console.log(this.$refs.mySwiper.swiper.height); }, methods: { update() { console.log(this.data); console.log(this.$refs.mySwiper.swiper.$wrapperEl.css('height')); setTimeout(() => { this.$refs.mySwiper && this.$refs.mySwiper.swiper.update(); console.log(this.$refs.mySwiper.swiper.$wrapperEl.css('height')); }, 8000); } } } </script> <style lang='scss' scoped> .swiper-container { overflow: hidaden; width: 100%; height: 100%; } .swiper-slide { height: auto; } </style>
29
收起
正在回答 回答被采纳积分+1
3回答
4.Vue与React高级框架开发
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星