文章摘要
这篇文章主要介绍了在Vue组件中引入了`MenuCard`和`Waterfall`组件,并使用封装好的API方法进行数据管理。文章重点描述了数据初始化流程:通过`getBanner`获取Banner数据,通过`getMenus`获取菜单列表数据,并通过`mounted`和`methods`处理滚动加载和数据更新。文章还详细说明了如何在页面滚动时动态加载更多数据,确保数据加载的高效性。
<script>
import MenuCard from ‘@/components/menu-card.vue’ //引入的组件1
import Waterfall from ‘@/components/waterfall.vue’//引入的组件2
import {getBanner,getMenus} from ‘@/service/api.js’//引入的封装好的api方法
// 引入 注册 使用
export default {
name: ‘home’,
components: {
MenuCard: MenuCard,
Waterfall
},
data(){
return {
banners:[],
menuList:[],
page:1,
pages:5
}
},
mounted(){
getBanner().then(({data})=>{
this.banners=data.list;
// console.log(this.banners)
}),
// 1.
getMenus({page:this.page}).then(({data})=>{
console.log(data)
// this.menuList=data.list;当传了页码就不能这么赋值了
this.menuList=data.list;//存了第一页的数据
// this.pages=Math.ceil(data.total/data.page_size)
})
},
methods:{
loadingMenuHanle(){
console.log(‘在外部监听的滚动’)
this.page++;
// 2.
if(this.page > this.pages){
this.$refs.waterfall.isloading=false;
return;
}
this.$refs.waterfall.isloading=true;
getMenus({page:this.page}).then(({data})=>{
this.menuList.push(…data.list);//在第一次数据加载完成后再继续添加(push)渲染五条数据
this.$refs.waterfall.isloading=false;
})
}
}
}
</script>
<script>
import MenuCard from ‘@/components/menu-card.vue’ //引入的组件1
import Waterfall from ‘@/components/waterfall.vue’//引入的组件2
import {getBanner,getMenus} from ‘@/service/api.js’//引入的封装好的api方法
// 引入 注册 使用
export default {
name: ‘home’,
components: {
MenuCard: MenuCard,
Waterfall
},
data(){
return {
banners:[],
menuList:[],
page:1,
pages:5
}
},
mounted(){
getBanner().then(({data})=>{
this.banners=data.list;
// console.log(this.banners)
}),
// 1.
getMenus({page:this.page}).then(({data})=>{
console.log(data)
// this.menuList=data.list;当传了页码就不能这么赋值了
this.menuList=data.list;//存了第一页的数据
// this.pages=Math.ceil(data.total/data.page_size)
})
},
methods:{
loadingMenuHanle(){
console.log(‘在外部监听的滚动’)
this.page++;
// 2.
if(this.page > this.pages){
this.$refs.waterfall.isloading=false;
return;
}
this.$refs.waterfall.isloading=true;
getMenus({page:this.page}).then(({data})=>{
this.menuList.push(…data.list);//在第一次数据加载完成后再继续添加(push)渲染五条数据
this.$refs.waterfall.isloading=false;
})
}
}
}
</script>
© 版权声明
文章版权归作者所有,未经允许请勿转载。