索引列表 IndexList

使用场景:地区选择、联系人列表

注意

使用该组件需开启微信开发者工具增强编译索引列表 IndexList - 图1选项

核心概念

因索引列表元素较多,为了便于你理解文档,我会简单介绍一下索引列表各个部分的名称

首先,我们把索引列表分为 4 个部分:AnchorContentSidebarTip

  • Anchor——锚点,指索引列表中每一小节的标题部分
  • Content——内容,指索引列表中每一小节的内容部分
  • Sidebar——侧栏,指位于屏幕右侧用于索引的导航条
  • Tip——提示,指滑动侧栏时,在屏幕上显示的提示

以上四个名词分别对应的部分如下图所示:

索引列表 IndexList - 图2

基本用法

索引列表由index-listindex-anchor构成,index-list需包裹在index-anchor的外层

  1. <l-index-list scroll-top="{{scrollTop}}">
  2. <view>
  3. <l-index-anchor>A</l-index-anchor>
  4. <view>鞍山</view>
  5. <view>安庆</view>
  6. <view>安阳</view>
  7. </view>
  8. <view>
  9. <l-index-anchor>B</l-index-anchor>
  10. <view>鞍山</view>
  11. <view>安庆</view>
  12. <view>安阳</view>
  13. </view>
  14. </l-index-list>
  1. // 页面js文件
  2. Page({
  3. data: {
  4. // 页面垂直滑动的距离
  5. scrollTop: undefined,
  6. },
  7. // 页面监听函数
  8. onPageScroll(res) {
  9. this.setData({
  10. scrollTop: res.scrollTop,
  11. })
  12. },
  13. })

注意

页面js文件中必须使用 onPageScroll()索引列表 IndexList - 图3 监听页面滚动事件,以便给scrollTop 属性传值。

高级用法

Sidebar显示的数据可通过属性sidebar-data自定义,否则显示为A-Z26 个大写英文字母。

Anchor显示内容可通过默认插槽自定义,否则显示为对应Sidebar的内容。

  1. <!-- 使用 sidebar-data 自定义索引内容 -->
  2. <l-index-list sidebar-data="{{sidebarData}}" bind:linselected="onSelected">
  3. <!-- 使用插槽自定义 Tip -->
  4. <view slot="tip">
  5. <view>{{indexText}}</view>
  6. </view>
  7. <view>
  8. <!-- 使用插槽自定义 Anchor -->
  9. <l-index-anchor>
  10. <view>热门</view>
  11. </l-index-anchor>
  12. <view>鞍山</view>
  13. <view>安庆</view>
  14. <view>安阳</view>
  15. </view>
  16. <view>
  17. <l-index-anchor>B</l-index-anchor>
  18. <view>鞍山</view>
  19. <view>安庆</view>
  20. <view>安阳</view>
  21. </view>
  22. </l-index-list>
  1. // 页面js文件
  2. Page({
  3. data:{
  4. // 显示在 Tip 区域的文字
  5. indexText:""
  6. }
  7. // 页面监听函数
  8. onPageScroll(res) {
  9. wx.lin.setScrollTop(res.scrollTop)
  10. },
  11. // 索引被选中的监听函数
  12. onSelected(event){
  13. this.setData({
  14. indexText: event.detail.indexText
  15. })
  16. }
  17. })

优化

scrollTop的传入方式除了使用index-list组件的属性传入以外,还支持wx.lin.setScrollTop(scrollTop)

如果对性能有极致要求,建议使用wx.lin.setScrollTop(scrollTop)的方式传入scrollTop属性。

索引列表属性(IndexList Arrtibutes)

参数说明类型可选值默认值版本号
is-stickAnchor滚动到顶部时是否吸附Boolean—-true—-
scroll-toponScrollTop监听函数获取到的值(单位px必填Number—-—-
sidebar-dataSidebar显示的索引内容String[]—-A-Z—-
show-sidebar是否显示SidebarBoolean—-true—-
stick-offset-topAnchor吸附时距离顶部的距离(单位rpxNumber—-0—-

索引列表外部样式类(IndexList ExternalClasses)

外部样式类名说明备注版本号
l-anchor-class覆盖Anchor整体样式—-—-
l-tip-class覆盖Tip整体样式—-—-
l-sidebar-class覆盖Sidebar整体样式—-—-
l-selected-class覆盖Sidebar当前选择的索引项样式—-—-
l-unselected-class覆盖Sidebar未选择的索引项样式—-—-

索引列表事件(IndexList Events)

事件名称说明返回值备注版本号
bind:linselected索引选中回调事件当前选中索引值—-—-

索引列表插槽(IndexList Slot)

Slot 名称说明备注版本号
默认 slotContent区域—-—-
tipTip区域—-—-

索引锚点插槽(IndexAnchor Slot)

Slot 名称说明备注版本号
默认 slotAnchor区域—-—-

索引列表 wx.lin 方法(IndexList wx.lin Function)

方法名称说明返回值备注版本号
wx.lin.setScrollTop设置scrollTop—-—-