更新记录

1.0.1(2023-06-08) 下载此版本

优化数据更新后的处理逻辑

1.0.0(2023-05-25) 下载此版本

第一次发布


平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.4.10 app-vue app-nvue
钉钉小程序 快手小程序 飞书小程序 京东小程序
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari

属性说明

属性值 类型 默认值 说明
list Array [] 数据源
retrieveProperties String name 指定右侧字母的拼音检索属性,如果参数不是name,可以任意更换
headerHeight | Number | 0 自定义顶部内容高度,无顶部内容可不传,用于计算滑动高度

用法:

1、引入插件,给源数据list参数赋值;注意:指定右侧字母的拼音检索属性,如果检索的参数不是name,可以更换retrieveProperties的值予以匹配。 2、自定义单元格内容:

    <!-- slotProps是当前插槽bind绑定的所有数据,slotProps是固定的名字 不能改变 接受子组件传递过来的数据 -->
            <template v-slot:itemBody="slotProps">
                <view class="lineBody">
                    <image class="headImg" :src="slotProps.itemData.avatar" v-if="slotProps.itemData.avatar"
                        mode="aspectFill"></image>
                    <image class="headImg" src="../../static/avatar.png" v-else mode="aspectFill"></image>
                    <view class="name">
                        {{slotProps.itemData.name}}
                    </view>
                </view>
            </template>

3、如果需要自定义顶部和底部的插槽:

    <template #header>
                <view class="headerStyle"
                    style="background-color: palegoldenrod;height: 100px;display: flex;align-items: center; justify-content: center;">
                    自定义的顶部数据
                </view>
            </template>

            <template #footer>
                <view class="flexCenter footerStyle">
                    自定义的底部数据
                </view>
            </template>

注意:在自定义顶部插槽后,参数headerHeight的高度应该和顶部的高度相等

示例(index.vue):

<template>
    <view class="rootView">
        <letterSortView class="letterSortView" :list="listData" :headerHeight='100'>
            <template #header>
                <view class="headerStyle"
                    style="background-color: palegoldenrod;height: 100px;display: flex;align-items: center; justify-content: center;">
                    自定义的顶部数据
                </view>
            </template>
            <template v-slot:itemBody="slotProps">
                <view class="lineBody">
                    <image class="headImg" :src="slotProps.itemData.avatar" v-if="slotProps.itemData.avatar"
                        mode="aspectFill"></image>
                        <image class="headImg" src="../letterSort/images/avatar.png" v-else
                            mode="aspectFill"></image>
                    <view class="name">
                        {{slotProps.itemData.name}}
                    </view>
                </view>
            </template>
            <template #footer>
                <view class="flexCenter footerStyle">
                    自定义的底部数据
                </view>
            </template>
        </letterSortView>
    </view>
</template>

<script>
    import letterSortView from '@/pages/letterSort/components/letterSortView.vue'
    export default {
        data() {
            return {
                listData: [{
                        'name': 'Sophia',
                        'id': 87,
                        'avatar': ''
                    },
                    {
                        'name': 'Charlotte',
                        'id': 41,
                        'avatar': ''
                    },
                    {
                        'name': 'Oliver',
                        'id': 16,
                        'avatar': ''
                    },
                    {
                        'name': 'Amelia',
                        'id': 23,
                        'avatar': ''
                    },
                    {
                        'name': 'Lucas',
                        'id': 95,
                        'avatar': ''
                    },
                    {
                        'name': 'Liam',
                        'id': 63,
                        'avatar': ''
                    },
                    {
                        'name': 'Evelyn',
                        'id': 99,
                        'avatar': ''
                    },
                    {
                        'name': 'Alexander',
                        'id': 51,
                        'avatar': ''
                    },
                    {
                        'name': 'James',
                        'id': 36,
                        'avatar': ''
                    },
                    {
                        'name': 'Noah',
                        'id': 76,
                        'avatar': ''
                    },
                    {
                        'name': 'William',
                        'id': 87,
                        'avatar': ''
                    },
                    {
                        'name': 'Mia',
                        'id': 64,
                        'avatar': ''
                    },
                    {
                        'name': 'Emma',
                        'id': 92,
                        'avatar': ''
                    },
                    {
                        'name': 'Abigail',
                        'id': 35,
                        'avatar': ''
                    },
                    {
                        'name': 'John',
                        'id': 15,
                        'avatar': ''
                    },
                    {
                        'name': 'Henry',
                        'id': 10,
                        'avatar': ''
                    },
                    {
                        'name': 'Ava',
                        'id': 52,
                        'avatar': ''
                    },
                    {
                        'name': 'Isabella',
                        'id': 80,
                        'avatar': ''
                    },
                    {
                        'name': 'Benjamin',
                        'id': 11,
                        'avatar': ''
                    },
                    {
                        'name': 'Harper',
                        'id': 73,
                        'avatar': ''
                    }
                ],
            }
        },
        components: {
            letterSortView
        },
        methods: {

        }
    }
</script>

<style lang="scss" scoped>
    .rootView {
        height: 100%;
        width: 100%;
    }

    .lineBody {
        display: flex;
        align-items: center;
        padding: 20rpx 30rpx;
        box-sizing: border-box;
        border-bottom: 1px solid rgba(164, 164, 164, .2);

        .headImg {
            width: 80rpx;
            height: 80rpx;
            border-radius: 15rpx;
            margin-right: 30rpx;
        }
    }

    .headerStyle {
        height: 100px;
        background-color: palegoldenrod;
    }

    .footerStyle {
        height: 100px;
        background-color: pink;
    }

    .flexCenter {
        display: flex;
        align-items: center;
        justify-content: center;
    }
</style>

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问