目录

refresh2(1090+)

概述

下拉刷新增强容器。

目前已有refresh组件仅提供简单功能,不能扩展,所以现新增refresh2组件。

使用限制

限制条件

说明

适用终端

手机、平板、智慧屏、车机

适用区域

全球

子组件

支持<refresh-header>和<refresh-footer>等子组件。

属性

除了支持 通用属性 以外,还支持如下属性。

名称

类型

默认值

是否必填

描述

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>

版本更新说明

版本

发布日期

描述

1090

2022-05-19

第一次正式发布。