除了支持 通用属性 以外,还支持如下属性。
名称 | 类型 | 默认值 | 是否必填 | 描述 |
|---|---|---|---|---|
pulldownrefreshing | boolean | false | 否 | 是否正下拉刷新。 |
pulluprefreshing | boolean | false | 否 | 是否正上拉刷新。 |
animationduration | number | 300ms | 否 | header或footer移动动画时长。 |
enablepulldown | boolean | true | 否 | 是否启用下拉刷新功能。 |
enablepullup | boolean | false | 否 | 是否启用上拉刷新功能。 |
reboundable | boolean | false | 否 | 是否允许越界回弹。 |
gesture | boolean | true | 否 | 是否允许手势滑动刷新。 |
offset | length | 132px | 否 | 组件静止时,距离顶部的距离,该参数仅对header有效。 |
refresh | boolean | false | 否 | refresh组件是否正在刷新。 |
type | string | auto | 否 | 两个取值,不能动态更改。 auto:默认效果。list被拉到顶部时,列表不再移动。 pulldown: list下拉到底时,可以继续下拉一段。 |
除了支持 通用样式 以外,还支持如下样式。
名称 | 类型 | 默认值 | 是否必填 | 描述 |
|---|---|---|---|---|
background-color | color | white | 否 | refresh2组件背景颜色,兼容refresh组件,且仅对默认header有效。 |
progress-color | color | black | 否 | refresh2组件loading颜色,兼容refresh组件,且仅对默认header有效。 |
除了支持 通用事件 以外,还支持如下事件。
名称 | 参数 | 描述 |
|---|---|---|
pulldownrefresh | - | 下拉组件触发刷新操作。 |
pulluprefresh | - | 上拉组件触发刷新操作。 说明: 需要和refresh-footer配套使用。 |
refresh | {refreshing: refreshingValue} | 下拉组件触发刷新操作,兼容refresh组件。 |
名称 | 参数 | 描述 |
|---|---|---|
startPullDownRefresh | - | 开始下拉刷新。 |
stopPullDownRefresh | - | 停止下拉刷新。 |
startPullUpRefresh | - | 开始上拉刷新。 说明: 需要和refresh-footer配套使用。 |
stopPullUpRefresh | - | 停止上拉刷新。 |
<template>
<div class="root">
<refresh2 id="refresh" offset="132px" animationduration="500" class="container" reboundable="false" type="auto" @refresh="refresh" @pulluprefresh="pullUpRefresh" @pulldownrefresh="pullDownRefresh" gesture="true" enablepulldown="true" enablepullup="true">
<!-- content -->
<div class="content-list">
<list class="list" id="movie-list" @scrollbottom="loadMoreData">
<list-item type="listItem" for="{{dataList}}" tid="$item.id">
<text class="list_item">{{$item.title}}</text>
</list-item>
</list>
</div>
</refresh2>
</div>
</template>
<style>
.root {
flex-direction: column;
align-items: center;
}
.list_item {
height: 150px;
border-bottom: 1px solid #dddddd;
width: 100%;
flex-direction: column;
align-items: flex-start;
justify-content: center;
padding-left: 30px;
}
.list {
padding-left: 16px;
padding-right: 16px;
}
.content-list {
background-color: #D0D0D0;
flex-direction: column;
align-items: center;
}
.container {
height: 100%;
width: 100%;
}
.header {
height: 175%;
width: 100%;
background-color: #800000;
justify-content: center;
align-items: center;
}
.content {
width: 100%;
height: 100%;
background-color: #ffffff;
}
.txt {
width: 100%;
height: 100px;
}
.circular {
width: 100%;
height: 75px;
}
.footer {
height: 100px;
width: 100%;
background-color: #008000;
justify-content: center;
align-items: center;
}
.loading {
color: #ffffff;
}
</style>
<script>
import api from '../Common/SR399/service.js'
const LOAD_MORE_INITIAL_INDEX = 1;
const LOAD_MORE_INCREASE_THRESHOLD = 1;
module.exports = {
backgroundColor: "#ffffff",
progressColor: "#ffffff",
data: {
dataList: [],
currentTotalPages: Number.MAX_SAFE_INTEGER,
currentPage: LOAD_MORE_INITIAL_INDEX,
},
computed: {
loadMoreEnabled: {
get() {
return this.currentPage < this.currentTotalPages
}
},
},
onReady(options) {
this.getData(LOAD_MORE_INITIAL_INDEX)
},
// Service calls
loadMoreData: function () {
if (this.loadMoreEnabled) {
this.getData(this.currentPage + LOAD_MORE_INCREASE_THRESHOLD)
}
},
clearData: function () {
this.dataList = []
},
getData: function (page) {
this.currentPage = page
var app = this
api.callGet({ page: page }, function (data) {
if (page > LOAD_MORE_INCREASE_THRESHOLD) {
data.results.forEach(movie => {
app.dataList.push(movie)
});
} else {
app.dataList = data.results
}
app.currentTotalPages = data.total_pages
})
},
pullDownRefresh: function () {
console.log("pullDownRefresh");
console.log("pulldownrefreshing:" + this.$element('refresh').pulldownrefreshing)
console.log("pulluprefreshing:" + this.$element('refresh').pulluprefreshing)
this.$element('refresh').startPullDownRefresh()
setTimeout(() => {
this.clearData()
this.getData(LOAD_MORE_INITIAL_INDEX)
this.finishPullDownRefresh()
}, 500);
},
pullUpRefresh: function () {
console.log("pullUpRefresh");
console.log("pulldownrefreshing:" + this.$element('refresh').pulldownrefreshing)
console.log("pulluprefreshing:" + this.$element('refresh').pulluprefreshing)
this.$element('refresh').startPullUpRefresh();
setTimeout(() => {
this.finishPullUpRefresh()
}, 500);
},
refresh: function (e) {
console.log("refresh:" + e.refreshing);
},
footerMove: function (params) {
console.log("footermove - scrollY:" + params.scrollY + " percent:" + params.percent + " isDrag:" + params.isDrag + " refreshing:" + params.refreshing)
},
finishPullDownRefresh: function () {
console.log("finishPullDownRefresh")
this.$element('refresh').stopPullDownRefresh()
},
finishPullUpRefresh: function () {
console.log("finishPullUpRefresh")
this.$element('refresh').stopPullUpRefresh()
},
}
</script>