edu/app/src/pages/news/component/news-list.vue

51 lines
1.2 KiB
Vue
Raw Normal View History

2022-09-08 08:55:00 +00:00
<template>
<z-paging auto-show-back-to-top :auto="i==index" ref="paging" v-model="dataList" :data-key="i" @query="queryList" :fixed="false" height="100%">
2022-09-08 08:55:00 +00:00
<block v-for="(newsItem,newsIndex) in dataList" :key="newsIndex">
2022-09-08 10:20:32 +00:00
<news-card :item="newsItem" :newsId="newsItem.id"></news-card>
2022-09-08 08:55:00 +00:00
</block>
</z-paging>
</template>
<script lang="ts" setup>
import { ref, watch, nextTick } from 'vue';
2022-09-08 08:55:00 +00:00
import { getArticleList } from "@/api/news"
const props = withDefaults(defineProps < {
cid: number,
i: number,
index: number
} > (), {
cid: 0
})
const paging = ref(null)
const dataList = ref([])
const isFirst = ref<boolean>(true)
watch(() => props.index, async () => {
await nextTick()
if( props.i == props.index && isFirst.value ) {
isFirst.value = false;
paging.value?.reload();
}
}, { immediate: true })
2022-09-08 08:55:00 +00:00
const queryList = async (pageNo, pageSize) => {
2022-09-09 02:47:19 +00:00
try{
const { lists } = await getArticleList({
cid: props.cid,
pageNo, pageSize
})
paging.value.complete(lists);
}catch(e){
console.log('报错=>',e)
//TODO handle the exception
paging.value.complete(false);
}
2022-09-08 08:55:00 +00:00
}
</script>
<style scoped>
</style>