Vue 响应式渲染 - 过滤应用

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue响应式渲染综合 - 过滤应用

目录

过滤应用

引入vue

Vue设置

设置页面元素

模糊查询过滤实现

函数表达式实现

总结


过滤应用

综合响应式渲染做一个输入框,用来实现;搜索输入框关键词符合列表。

引入vue

在当前html文件中引入Vue2 js。

示例如下:

<script src="../lib/vue.js"></script>

Vue设置

实例化Vue,绑定具体元素;设置相应的数据状态变量和事件处理。

示例如下:

<script>
    let vm = new Vue({
        el:'#box',
        data: {
            mytext:'',
            datalist:['aa', 'bb', 'cc', 'dd', 'ee', 'de']
        },
        methods:{
            handleInput() {
                console.log('input')
            }
        }
    })
</script>

设置页面元素

设置页面元素并绑定事件。

示例如下:

<div id="box">
    <input type="text" @input="handleInput">
    <ul>
        <li v-for="item in datalist" :key="item">
            {{item}}
        </li>
    </ul>
</div>

模糊查询过滤实现

Input事件,只要值改变就会触发;然后在绑定事件中对列表变量进行过滤处理。

注意:需要设置一个不变的数组源,如果把过滤的数组覆盖掉原数组,则无法再实现反复输入和过滤,最后变成空列表。

示例如下:

let vm = new Vue({
    el:'#box',
    data: {
        mytext:'',
        datalist:['aa', 'bb', 'cc', 'dd', 'ee', 'de'],
        originList:['aa', 'bb', 'cc', 'dd', 'ee', 'de']
    },
    methods:{
        handleInput(eve) {
            console.log('input', eve.target.value)
            this.mytext = eve.target.value;

            this.datalist = this.originList.filter(item=> item.includes(this.mytext))
        }
    }
})

效果:

函数表达式实现

上面实现的方式,不够完美;下面我们使用函数表达式来进行优化实现。

首先修改input绑定事件,改为值改变触发事件。

然后渲染列表改为函数表达式实现。

示例如下:

<div id="box">
    <input type="text" v-model="mytext">
    <ul>
        <li v-for="item in test()" :key="item">
            {{item}}
        </li>
    </ul>
</div>
<script>
    let vm = new Vue({
        el:'#box',
        data: {
            mytext:'',
            datalist:['aa', 'bb', 'cc', 'dd', 'ee', 'de']
        },
        methods:{
            test() {
                return this.datalist.filter(item=> item.includes(this.mytext))
            }
        }
    })
</script>

效果:

 

总结

综合响应式渲染做一个输入框,用来实现;搜索输入框关键词符合列表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值