Lynx

<refresh> XElement

<refresh> 元素提供下拉刷新手势,在拉动过程中展示可自定义的头部视图,用于指示正在获取新数据。

当用户下拉超过可配置的阈值时,会触发 refresh 事件。你可以在事件回调中触发异步更新,并在操作完成后自动隐藏头部视图。

用法

  • <refresh> 仅支持垂直方向的下拉刷新手势。
  • 它最多接受两个直接子元素:<refresh-header> 和内部包含可垂直滚动内容的 <view>

下拉刷新

通过 <refresh-header> 定义刷新效果,并将 <refresh>enable-refresh 设为 true。

  1. 触发刷新:向下拖拽或调用 autoStartRefresh,将 <refresh-header> 锁定在顶部并触发 startrefresh 事件。

  2. 结束刷新:调用 finishRefresh,以动画方式将 <refresh-header> 移出视野。

属性

enable-refresh

Android
iOS
Harmony
// @默认值: true
'enable-refresh'?: boolean;

确定向下拖动或调用 autoStartRefresh 是否可以触发 startrefresh 事件。

事件

前端可以绑定相应的事件回调来监听元素的运行时行为,如下所示。

bindheaderoffset

Android
iOS
Harmony
bindheaderoffset = (e: RefreshHeaderOffsetEvent) => {};
字段类型是否可选默认值平台自版本描述
isDragging布尔值
Android
iOS
Harmony
指示 <refresh-header> 是否正在被拖动
offsetPercent数字
Android
iOS
Harmony
下拉移动距离与自身高度的比值

<refresh-header> 暴露时,在移动过程中触发。

bindrefreshstatechange

Android
iOS
Harmony
bindrefreshstatechange = (e: RefreshStateChangeEvent) => {};
字段类型是否可选默认值平台自版本描述
stateRefreshState
Android
iOS
Harmony
指示 <refresh-header> 是否正在被拖动

<refresh-header> 状态改变时触发。

bindstartrefresh

Android
iOS
Harmony
bindstartrefresh = (e: RefreshStartRefreshEvent) => {};
字段类型是否可选默认值平台自版本描述
isManual布尔值
Android
iOS
Harmony
指示 startrefresh 事件是否由手动拖动触发

当 enable-refresh 为 true 时,向下拖动或调用 autoStartRefresh(进入刷新状态)时触发。

方法

前端可以通过 SelectorQuery API 调用组件方法。

autoStartRefresh

Android
iOS
Harmony

lynx.createSelectorQuery()
     .select('#id')
     .invoke({
      method: 'autoStartRefresh',
      success: function (res) {},
      fail: function (res) {},
    })
    .exec();

当 enable-refresh 为 true 时,调用此方法可显示整个 <refresh-header> ,触发 startrefresh 事件,之后 <refresh-header> 将附着在刷新视口的顶部边缘。

finishRefresh

Android
iOS
Harmony

lynx.createSelectorQuery()
     .select('#id')
     .invoke({
      method: 'finishRefresh',
      success: function (res) {},
      fail: function (res) {},
    })
    .exec();

在 startrefresh 事件之后调用此方法以结束刷新状态,使 <refresh-header> 回弹。

兼容性

LCD tables only load in the browser

除非另有说明,本项目采用知识共享署名 4.0 国际许可协议进行许可,代码示例采用 Apache License 2.0 许可协议进行许可。