老师,为什么我点击tab的时候,content的切换很奇怪
我在男装页面点击女装页面的时候,loading遮挡层出现之后,会先闪现男装的页面,再变成女装页面,这要怎么办??
<template>
<div class="content-wrapper">
<div class="loading-container" v-if="isLoading">
<div class="loading-wrapper">
<me-loading class="mine-loading"></me-loading>
</div>
</div>
<me-scroll ref="scroll">
<div class="content">
<div class="pic" v-if="content.banner">
<a class="pic-link" :href="content.banner.linkUrl">
<img @load="updataScroll" class="pic-img" :src="content.banner.picUrl" alt="">
</a>
</div>
<div class="section" v-for="(section, index) in content.data" :key="index">
<h4 class="section-title">{{section.name}}</h4>
<ul class="section-list" >
<li class="section-item" v-for="(item, i) in section.itemList" :key="i">
<a class="section-link" :href="item.linkUrl">
<img class="section-pic" v-lazy="item.picUrl" :alt="item.name">
</a>
</li>
</ul>
</div>
</div>
</me-scroll>
</div>
</template>
<script>
import MeLoading from 'base/loading'
import MeScroll from 'base/scroll'
import {getCategoryComtent} from 'api/category.js'
export default {
name: 'CategoryContent',
data(){
return {
content: {},
isLoading: true
}
},
props: {
getId: {
type: String,
default: ''
}
},
watch: {
getId(id) {
this.isLoading = true
this.getContent(id).then(() => {
this.updataScroll()
this.isLoading = false
})
}
},
methods: {
getContent(id) {
return getCategoryComtent(id).then(data => {
this.content = data.content
})
},
updataScroll() {
this.$refs.scroll && this.$refs.scroll.updateScroll()
}
},
components: {
MeLoading,
MeScroll
}
}
</script>
<style lang="scss" scoped>
@import '~assets/scss/mixins';
.content-wrapper {
position: relative;
height: 100%;
}
.loading-container {
width: 100%;
height: 100%;
@include flex-center;
z-index: $category-popup-z-index;
}
.loading-wrapper {
width: 50%;
height: 20%;
border-radius: 10%;
background-color: gray;
opacity: 0.4;
}
.mine-loading {
color: #fff;
font-size: 14px;
}
.content {
padding: 10px;
}
.pic {
margin-bottom: 12px;
&-link {
width: 100%;
}
&-img {
width: 100%;
}
}
.section {
margin-bottom: 12px;
&:last-child {
margin-bottom: 0px;
}
&-title {
height: 28px;
line-height: 28px;
color: #080808;
font-weight: bold;
}
&-list {
display: flex;
flex-wrap: wrap;
background-color: #fff;
padding: 10px 10px 0;
}
&-item {
width: (100% / 3);
}
&-link {
width: 100%;
}
&-pic {
width: 100%;
}
}
</style>
正在回答
同学你好,是的,这是因为loading的原因(因为同学写的方法名和类名等与源码不一致,老师这里将其修改为了源码的方法名),同学可以先把loading效果全关掉:
就不会这样了。这是因为在男装页面显示时,数据已经加载成功,当切换到女装页面时,会先显示loading,当loading效果结束后,此时女装的数据还未加载出来,不能覆盖男装的数据,就会先显示下男装的数据,再显示女装的,视频老师也有这样的问题,同学可以仔细看下视频的12分37秒左右,由热门推荐切换慕淘超市,也会先显示下热门推荐的内容:
所以同学现在的代码是没有问题的,同学可以再往后学,设置完本地存储应该就没问题了。
祝学习愉快~
同学你好,在点击了男装以后,再点女装,会先显示男装的页面,是因为发生请求获取响应时,先响应的男装的页面,在点击女装后,女装页面的信息还没来的及返回。同学可以先往下听,视频老师会给解决方法:
https://class.imooc.com/lesson/827#mid=20549
祝学习愉快~
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星