IndexList

优质
小牛编辑
131浏览
2023-12-01

索引列表,提供了列表索引的功能,也是一个基于better-scroll进行封装的组件。

示例

  • 基本使用

    构造如示例中 cityData 这样结构的数据,传入 cube-index-list 组件的 data 属性。

    <cube-index-list
      :data="cityData"
      :title="title"
      @select="selectItem"
      @title-click="clickTitle"></cube-index-list>
    
    const cityData = [
      {
        "name": "★Hot City",
        "items": [
          {
            "name": "BEIJING",
            "value": 1
          },
          {
            "name": "SHANGHAI",
            "value": 2
          }
        ]
      },
      {
        "name": "A",
        "items": [
          {
            "name": "ANSHAN",
            "value": 3
          },
          {
            "name": "ANQING",
            "value": 4
          }
        ]
      }
    ]
    
    export default {
      data() {
        return {
          title: 'Current City: BEIJING',
          cityData: cityData
        }
      },
      methods: {
        selectItem(item) {
          console.log(item.name)
        },
        clickTitle(title) {
          console.log(title)
        }
      }
    }
    
  • 自定义插槽

    除了默认结构,你还可以根据自己的需要自定义每一项的内容。如下所示,将你的自定义内容项填入cube-index-list-item的插槽。除非你真的知道自己在做什么,否则不要修改cube-index-list-groupcube-index-list-item的用法。

    <cube-index-list :data="cityData">
      <cube-index-list-group
        v-for="(group, index) in cityData"
        :key="index"
        :group="group">
        <cube-index-list-item
          v-for="(item, index) in group.items"
          :key="index"
          :item="item"
          @select="selectItem">
          <div class="custom-item">我是自定义 {{item.name}}</div>
        </cube-index-list-item>
      </cube-index-list-group>
    </cube-index-list>
    
    export default {
      data() {
        return {
          cityData: cityData
        }
      },
      methods: {
        selectItem(item) {
          console.log(item.name)
        },
        clickTitle(title) {
          console.log(title)
        }
      }
    }
    
    // 自定义项的样式
    .custom-item
      position: relative
      height: 70px
      line-height: 70px
      padding: 0 16px
      font-size: $fontsize-medium
    
    // 用自定义样式,覆写内置的默认样式
    .cube-index-list-content
      background-color: #222
      color: #909090
    .cube-index-list-anchor
      background-color: #333
      height: 30px
      line-height: 30px
      padding: 0 0 0 20px
    .cube-index-list-nav
      padding: 20px 0
      border-radius: 10px
      background: rgba(0,0,0,.3)
      >ul
        >li
          padding: 3px
          font-size: 12px
          color: #909090
          &.active
            color: #ffcd32
    
  • 上拉加载

    可以通过 pullUpLoad 属性开启上拉加载功能,具体配置同 Scroll 组件的 options.pullUpLoad

    <cube-index-list
      ref="indexList"
      :data="data"
      :title="title"
      :pullUpLoad="true"
      @select="selectItem"
      @title-click="clickTitle"
      @pulling-up="onPullingUp">
    </cube-index-list>
    
    export default {
      data() {
        return {
          title: 'Current City: BEIJING',
          data: cityData.slice(0, 4)
        }
      },
      methods: {
        selectItem(item) {
          console.log(item.name)
        },
        clickTitle(title) {
          console.log(title)
        },
        onPullingUp() {
          // Mock async load.
          setTimeout(() => {
            const length = this.data.length
            if (length < cityData.length) {
              // Update data.
              this.data.push(cityData[length])
            }
            // Call forceUpdate after finishing data load.
            this.$refs.indexList.forceUpdate()
          }, 1000)
        }
      }
    }
    
    • 下拉刷新

    可以通过 pullDownRefresh 属性开启下拉刷新功能,具体配置同 Scroll 组件的 options.pullDownRefresh

    <cube-index-list
      ref="indexList"
      :data="data"
      :title="title"
      :pullDownRefresh="pullDownRefresh"
      @select="selectItem"
      @title-click="clickTitle"
      @pulling-down="onPullingDown">
    </cube-index-list>
    
    export default {
      data() {
        return {
          title: 'Current City: BEIJING',
          data: cityData,
          pullDownRefresh: {
            stop: 55
          }
        }
      },
      methods: {
        selectItem(item) {
          console.log(item.name)
        },
        clickTitle(title) {
          console.log(title)
        },
        onPullingDown() {
          // Mock async load.
          setTimeout(() => {
            // Update data.
            this.data[1].items.push(...cityData[1].items)
            // Call forceUpdate after finishing data load.
            this.$refs.indexList.forceUpdate(true)
          }, 1000)
        }
      }
    }
    

Props 配置

参数说明类型默认值
title标题String-
data需要展示的数据Array[]
navbar是否需要导航栏Booleantrue
speed点击导航栏索引时,滚动到相应位置的动画时间(单位:ms)number0
options1.9.8+better-scroll 配置项,具体请参考BS 官方文档Object{
observeDOM: true,
click: true,
probeType: 1,
scrollbar: false,
pullDownRefresh: false,
pullUpLoad: false
}
注意:从1.12.38版本开始,因修复BSiOS13.4版本的滚动问题,useTransition在iOS版本>=13.4时默认为fasle
具体请参考#978
pullUpLoad1.8.0+上拉加载,具体配置参考 scroll 组件的 options.pullUpLoad即将废弃,推荐使用 options 属性Boolean/Objectfalse
pullDownRefresh1.8.0+下拉刷新,具体配置参考 scroll 组件的 options.pullDownRefresh即将废弃,推荐使用 options 属性Boolean/Objectfalse
  • data 子配置项

data 是数组,表示的是一组数据,每一项配置:

参数说明类型
name组名String
items当前组下的数据项Array

items 数组中的每一项必须是对象,且包含 name 属性用于显示内容;例如 items: [{name: 'xx', ...}, ...]

插槽

名字说明作用域参数
title1.12.25+标题插槽-
pulldown1.9.4+位于列表上方,会在下拉刷新时显示,与 scroll 组件相同具体参考 scroll 组件的 pulldown 插槽作用域参数介绍
pullup1.9.4+位于列表下方,会在上拉加载时显示,与 scroll 组件相同具体参考 scroll 组件的 pullup 插槽作用域参数介绍

事件

事件名说明参数
select点击 IndexList 的某一项后触发该选项的数据
title-click点击 title 后触发(title 必须设置后才有效)title属性值
pulling-up1.8.0+当 pullUpLoad 属性为 true 时,在上拉超过阈值时触发-
pulling-down1.8.0+当 pullDownRefresh 属性为 true 时,在下拉超过阈值时触发-

最后更新:

类似资料

  • 值的立方体只是值与自身相乘的三倍。 For example, 2的立方体是(2 * 2 * 2)= 8。 算法 (Algorithm) 该程序的算法简单易行 - START Step 1 → Take integer variable A Step 2 → Multiply A three times Step 3 → Display result as Cube STOP 伪

  • Cube 是一个开源的基于 MongoDB 的数据分析工具 Cube 的收集器接收事件并将这些事件保持在 MongoDB 中。你可通过 UDP、HTTP POST 或者 WebSockets 来发送事件。同时 Cube 内置支持接受来自 collectd 的事件。

  • 在前面的章节中,我们已经看到了如何绘制三角形并旋转它。 现在,在本章中,您可以了解如何使用3D立方体,如何旋转它,如何在其上附加图像。 同样,本章提供了绘制3D立方体并为其应用颜色并将图像附加到其上的示例。 下面给出了绘制三维立方体并为其应用颜色的程序。 import java.awt.DisplayMode; import javax.media.opengl.GL2; import javax

  • 找到给定数字是偶数或奇数,是一个经典的C程序。 我们将在C中学习使用条件语句if-else 。 算法 (Algorithm) 这个程序的算法很简单 - START Step 1 → Take integer variable A Step 2 → Assign value to the variable Step 3 → Perform A modulo 2 and check

  • cube-flowable 工作流引擎旨在打造一套零代码、领先、且快速实用的引擎工具,助力开发者在面对工作流开发任务时,除去学习工作流框架知识和API的学习成本且不去关心工作流是什么技术,无需了解学习,安装使用cube-flowable工作流引擎并应用落地。 此工作流引擎是零代码或低代码的工作流引擎,安装配置开箱即可使用,完全适用于中国国情的工作流引擎。主要特点包括: 在线拖拽可视化业务表单,并自

  • cube-ui 是由滴滴开源的基于 Vue.js 实现的移动端组件库。 功能特性 质量可靠 由滴滴内部组件库精简提炼而来,经历了业务一年多的考验,并且每个组件都有充分单元测试,为后续集成提供保障。 体验极致 以迅速响应、动画流畅、接近原生为目标,在交互体验方面追求极致。 标准规范 遵循统一的设计交互标准,高度还原设计效果;接口标准化,统一规范使用方式,开发更加简单高效。 扩展性强 支持按需引入和后