在Vue前端开发中,常用的ElementUI是有下拉搜索框的,便于搜索查找一些较多数据的内容

但是移动端VantUI默认是没有这个搜索框的

于是我简单的做了一个适配移动端的下拉搜索框,效果如下:

通过弹出的选择框加上搜索功能即可,附上主要实现代码

**HTML**

<div id="root">
            <h2>VantUI下拉搜索功能</h2>
            <van-field label="所属部门" readonly clickable required placeholder="点击选择所在部门" @click="showPicker=true" :value="value"></van-field>
            <van-popup v-model="showPicker" position="bottom">
                <!-- v-model.trim 对关键字进行去空处理 @input 输入框自身属性,对输入的值进行实时检测 -->
                <van-field clickable v-model.trim="keyvalue" left-icon="search" placeholder="搜索所在部门" @input="search"></van-field>
                <van-picker show-toolbar :columns="filterdepartments" @confirm="onConfirm" @cancel="showPicker=false"> </van-picker>
            </van-popup>
</div>

**JS**

new Vue({
    el: "#root",
    mounted() {
        //  挂载时,将原数组给到需要过滤的数组
        this.filterdepartments = this.departments;
    },
    data() {
        return {
            // 下拉框选择的值
            value: "",
            // 搜索框的关键字
            keyvalue: "",
            // 过滤数组
            filterdepartments: null,
            // 原数组
            departments: [
                { text: "销售部", value: "XSB" },
                { text: "市场部", value: "SCB" },
                { text: "研发部", value: "YFB" },
                { text: "人力资源部", value: "RLZYB" },
                { text: "财务部", value: "CWB" },
                { text: "采购部", value: "CGB" },
                { text: "生产部", value: "SCB" },
                { text: "品质部", value: "PZB" },
                { text: "物流部", value: "WLB" },
            ],
            showPicker: false,
        };
    },
    methods: {
        // 输入框搜索方法
        search() {
            // 对过滤数组进行操作,返回符合条件的数组
            this.filterdepartments = this.departments.filter((params) => {
                return params.text.includes(this.keyvalue);
            });
        },
        // 弹窗方法
        onConfirm(value) {
            this.value = value.text;
            this.showPicker = false;
        },
    },
});

具体实现思路:

1.在弹出框<van-popup>中加上一个输入框<van-field>

2.通过此输入框绑定input方法,对用户输入的关键字进行过滤搜索

3.对搜索的结果进行动态展示

完整的demo案例放在下方链接中

 下拉搜索框完整文件

Logo

前往低代码交流专区

更多推荐