索引列表,提供了列表索引的功能,也是一个基于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-group
和cube-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)
}
}
}
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
title | 标题 | String | - |
data | 需要展示的数据 | Array | [] |
navbar | 是否需要导航栏 | Boolean | true |
speed | 点击导航栏索引时,滚动到相应位置的动画时间(单位:ms) | number | 0 |
options1.9.8+ | better-scroll 配置项,具体请参考BS 官方文档 | Object | { observeDOM: true, click: true, probeType: 1, scrollbar: false, pullDownRefresh: false, pullUpLoad: false } 注意 :从1.12.38 版本开始,因修复BS在iOS13.4 版本的滚动问题,useTransition 在iOS版本>=13.4时默认为fasle 具体请参考#978 |
pullUpLoad1.8.0+ | 上拉加载,具体配置参考 scroll 组件的 options.pullUpLoad 。即将废弃 ,推荐使用 options 属性 | Boolean/Object | false |
pullDownRefresh1.8.0+ | 下拉刷新,具体配置参考 scroll 组件的 options.pullDownRefresh 。即将废弃 ,推荐使用 options 属性 | Boolean/Object | false |
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 时,在下拉超过阈值时触发 | - |