Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Accustomed_
hello uni-app x
提交
ff31beac
H
hello uni-app x
项目概览
Accustomed_
/
hello uni-app x
与 Fork 源项目一致
Fork自
DCloud / hello uni-app x
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hello uni-app x
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
ff31beac
编写于
8月 24, 2023
作者:
H
hdx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
long-list: 增加 loading
上级
237456bc
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
54 addition
and
39 deletion
+54
-39
pages/template/long-list/long-list-page.uvue
pages/template/long-list/long-list-page.uvue
+48
-26
pages/template/long-list/long-list.uvue
pages/template/long-list/long-list.uvue
+6
-13
未找到文件。
pages/template/long-list/long-list-page.uvue
浏览文件 @
ff31beac
<template>
<list-view class="list" ref="listView" @scroll="onScroll" @scrolltolower="loadData">
<list-item class="list-item" v-for="(item, index) in dataList" :key="index">
<view class="list-item-icon">
<image class="list-item-icon-image" :src="item.plugin_img_link"></image>
</view>
<view class="list-item-fill">
<view class="flex-row">
<text class="title">{{item.plugin_name}}</text>
<list-view class="list" ref="listView" @scrolltolower="loadData">
<template v-for="(item, index) in dataList" :key="index">
<list-item class="list-item">
<view class="list-item-icon">
<image class="list-item-icon-image" :src="item.plugin_img_link"></image>
</view>
<view class="description">
<text class="description-text">{{item.plugin_intro}}</text>
<view class="list-item-fill">
<view class="flex-row">
<text class="title">{{item.plugin_name}}</text>
</view>
<view class="description">
<text class="description-text">{{item.plugin_intro}}</text>
</view>
<text class="icon-star star">{{convertToStarUnicode(item.score)}}</text>
<view class="tag-list">
<text class="tag-item" v-for="(item2, index2) in item.tags" :key="index2">{{item2}}</text>
</view>
<view class="flex-row update-date">
<text class="update-date-text">更新日期</text>
<text class="update-date-value">{{item.update_date}}</text>
<text class="author">{{item.author_name}}</text>
</view>
</view>
<text class="icon-star star">{{convertToStarUnicode(item.score)}}</text>
<view class="tag-list">
<text class="tag-item" v-for="(item2, index2) in item.tags" :key="index2">{{item2}}</text>
</view>
<view class="flex-row update-date">
<text class="update-date-text">更新日期</text>
<text class="update-date-value">{{item.update_date}}</text>
<text class="author">{{item.author_name}}</text>
</view>
</view>
</list-item>
</list-item>
<!-- TODO 暂时这样写才能保证 loading 在 list 底部 -->
<list-item key="loading" v-if="index==dataList.length-1">
<text class="loading">{{loadingText}}</text>
</list-item>
</template>
</list-view>
</template>
...
...
@@ -57,9 +63,23 @@
loading: false,
dataList: [] as ListItem[],
isEnded: false,
loadingError: '',
$currentPage: 0
}
},
computed: {
loadingText() : string {
if (this.loading) {
return "加载中..."
} else if (this.isEnded) {
return "没有更多了"
} else if (this.loadingError.length > 0) {
return this.loadingError
} else {
return ""
}
}
},
mounted() {
uni.loadFontFace({
global: false,
...
...
@@ -105,7 +125,7 @@
}
},
fail: (err) => {
console.log(err)
this.loadingError = err.errMsg
},
complete: () => {
this.loading = false
...
...
@@ -128,10 +148,6 @@
if (nullStarCount > 0) { result += null_code.repeat(nullStarCount) }
return result
},
onScroll(e : ScrollEvent) {
// TODO e.detail.deltaY 值不正确
this.$emit('pageScroll', e.detail.deltaY)
}
}
}
...
...
@@ -215,4 +231,10 @@
color: #008000;
margin-left: auto;
}
.loading {
padding: 20px;
text-align: center;
background-color: #f8f8f8;
}
</style>
\ No newline at end of file
pages/template/long-list/long-list.uvue
浏览文件 @
ff31beac
...
...
@@ -10,7 +10,7 @@
<view class="swiper-tabs-item" v-for="(item, index) in swiperList" :id="'swipertab' + index" ref="swipertab"
:key="index" @click="onTabClick(index)">
<text class="swiper-tabs-item-text"
:class="swiperIndex==index ? '
uni-tab-item-title
-active' : ''">{{item.name}}</text>
:class="swiperIndex==index ? '
swiper-tabs-item-text
-active' : ''">{{item.name}}</text>
</view>
</view>
<view class="swiper-tabs-indicator">
...
...
@@ -22,7 +22,7 @@
<swiper class="swiper-view" ref="swiper" :current="swiperIndex" @change="onSwiperChange"
@transition="onSwiperTransition" @animationfinish="onSwiperAnimationfinish">
<swiper-item class="swiper-item" v-for="(item, index) in swiperList" :key="index">
<long-page ref="longPage" :type="item.type"
@pageScroll="onSwiperItemPageScroll"
></long-page>
<long-page ref="longPage" :type="item.type"></long-page>
</swiper-item>
</swiper>
</view>
...
...
@@ -120,17 +120,9 @@
//console.log(this.$lastSwiperIndex, moveToIndex, offsetX, this.$swiperWidth, percentage);
},
onSwiperAnimationfinish(e : SwiperAnimationFinishEvent) {
this.$lastSwiperIndex = e.detail.current;
// console.log("onSwiperAnimationfinish", e.detail.current);
// this.setSwiperIndex(e.detail.current, true);
},
onSwiperItemPageScroll(dy : number) {
let top = this.pageScrollTop + dy
if (top > this.$headerHeight) { top = this.$headerHeight }
if (top < 0) { top = 0 }
this.pageScrollTop = top
this.$lastSwiperIndex = e.detail.current
this.setSwiperIndex(e.detail.current, true)
},
queryTabItemsSize() {
this.$swiperTabsRect.length = 0;
...
...
@@ -186,7 +178,8 @@
}
.swiper-list {
height: 100%;
flex: 1;
/* height: 100%; */
}
.swiper-tabs {
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录