当前位置: 首页 > article >正文

Vue输入框模糊搜索的多种写法

(1)模板方案

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>
<body>
    <!-- 输入框模糊搜索 -->
    <div id="box">
        <input type="text" v-model="mytext"/>
        <ul>
            <template v-for="item in dataList" :key="item">
                <li v-if="item.includes(mytext)">{{ item }}</li>
            </template>
        </ul>
    </div>
    <script>
        var obj = {
            data(){
                return {
                    mytext:'',
                    dataList:['aaa','abc','acb','add','abb','acc','bca','cca','bba','ccc','bbb'],
                }
            }
        }
        Vue.createApp(obj).mount('#box')
    </script>
</body>
</html>

(2)复制方案 (浪费内存不优雅)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>
<body>
    <!-- 输入框模糊搜索 -->
    <div id="box">
        <input type="text" v-model="mytext"/ @input="handleInput">
        <ul>
            <template v-for="item in dataList" :key="item">
                <!-- <li v-if="item.includes(mytext)">{{ item }}</li> -->
                 <li>{{item}}</li>
            </template>
        </ul>
    </div>
    <script>
        var obj = {
            data(){
                return {
                    mytext:'',
                    dataList:['aaa','abc','acb','add','abb','acc','bca','cca','bba','ccc','bbb'],
                    baklist:['aaa','abc','acb','add','abb','acc','bca','cca','bba','ccc','bbb'] // 复制data
                }
            },
            methods:{
                handleInput(){
                  this.dataList = this.baklist.filter(item=>item.includes(this.mytext))
                }
            }
        }
        Vue.createApp(obj).mount('#box')
    </script>
</body>
</html>

(3)函数表达式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>
<body>
    <!-- 输入框模糊搜索 -->
    <div id="box">
        <input type="text" v-model="mytext"/>
        <ul>
            <template v-for="item in test()" :key="item">
                <li>{{ item }}</li>
            </template>
        </ul>
    </div>
    <script>
        var obj = {
            data(){
                return {
                    mytext:'',
                    dataList:['aaa1','abc','acb','add','abb','acc','bca','cca','bba','ccc','bbb','aac','aab'],
                }
            },
            methods:{
                test(){
                    return this.dataList.filter(item=>item.includes(this.mytext))
                }
            }
        }
        Vue.createApp(obj).mount('#box')
    </script>
</body>
</html>

(4)watch监听

(5)计算属性


http://www.kler.cn/a/290845.html

相关文章:

  • 【ROS2】坐标TF变换工具-tf2_ros
  • ajax中get和post的区别,datatype返回的数据类型有哪些?web开发中数据提交的几种方式,有什么区别。
  • js事件机制详解
  • 关于uni-forms组件的bug【提交的字段[‘*‘]在数据库中并不存在】
  • MyBatis通过注解配置执行SQL语句原理源码分析
  • 深入了解蓝牙Profile类型与设备的对应关系
  • Docker中的容器内部无法使用vi命令怎么办?
  • MySQL自动安装脚本8.0和5.0均可
  • SD-WAN组网:定义与部署步骤解析
  • AI绘画SD中如何安装/更新/卸载 Stable Diffusion WebUI 插件?SD新手必看的保姆级教程!
  • 使用 Cloudflare R2 代替 AWS S3……
  • Day15_0.1基础学习MATLAB学习小技巧总结(15)——字符矩阵
  • Python批量分割Excel后逐行做差、合并文件的方法
  • Redisson的几种锁的通俗说明
  • Go语言多态实践以及gin框架c.BindJSON序列化遇到的坑
  • C#数组中的Rank,GetUpperBound(), GetLength()
  • linux find 之 执行
  • GIT 下载安装使用教程
  • 小程序中用于跳转页面的5个api是什么?区别是什么
  • 【计算机网络】TCP协议
  • 【深度学习】向量化
  • 第 22 章 JavaScript DOM 元素尺寸和位置
  • Hadoop vs Spark
  • fpga图像处理实战-均值滤波
  • 从0开始学杂项 第八期:流量分析(2) 数据提取
  • Spring之整合Mybatis底层源码解析