vue使用watch监听实现即时搜索功能

摘要:
vue使用监视来实现类似的百度搜索功能{{item}}˃//throttling function con stdelay=()exportdefault{name:“cinemaTwo”,data(){return{keyword:'',cityList:[],timer:null,jsonData:[{'id':1,'name':'Beijing'},{'id“:2,”name“:”Shanghai“},{”id“:3,”name”“:”Guangzhou“}”,{‘id‘:4,‘name‘:‘Shenzhen‘},〕},观察:{keyword(){//函数节流if{clearTimeout}//删除文本并重置if(!
<template>
    <div>
        vue使用watch监听实现类似百度搜索功能
        <div>
            <input type="text"   placeholder="搜索" v-model.trim='keyword' />
        </div>
        <div v-show="keyword">
            <ul>
                <li v-for="item in cityList" :key="item.id" @click="handleCityClick(item.name)">
                    {{item}}
                </li>
            </ul>
        </div>
    </div>
</template>

<script>
// 节流函数
const delay = (function () {
    let timer = 0;
    return function (callback, ms) {
        clearTimeout(timer);
        timer = setTimeout(callback.ms)
    }
})()
export default {
    name: "cinemaTwo",
    data () {
        return {
            keyword: '',
            cityList: [],
            timer: null,
            jsonData: [{
                'id': 1,
                'name': '北京'
            },
            {
                'id': 2,
                'name': '上海'
            },
            {
                'id': 3,
                'name': '广州'
            },
            {
                'id': 4,
                'name': '深圳'
            },]
        }
    },
    watch: {
        keyword () {
            //函数节流
            if (this.timer) {
                clearTimeout(this.timer)
            }
            //删除文字  清零
            if (!this.keyword) {
                this.cityList = []
                return
            }
            this.timer = setTimeout(() => {
                const result = []
                this.jsonData.forEach(val => {
                    if (val.name.indexOf(this.keyword) > -1) {
                        result.push(val.name)
                    }
                });
                this.cityList = result
                console.log(this.cityList)
            }, 100)
        }
    },
    methods: {

    },
}
</script>

<style lang="scss" scoped>
</style>

免责声明:文章转载自《vue使用watch监听实现即时搜索功能》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Id中带冒号,Jquery如何获取linux服务基础之nginx配置详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue跨域访问

第一次创建vue项目,画完静态页面一切顺利,准备和后台进行联调,问题来了,无论怎么调试使用Axios,jQuary还是使用原生的Ajax请求都访问不通(前提条件,另外一个人的电脑当成服务器,进行访问),然后各种百度查询了很多资料才明白我进行了跨域访问, 解决办法,修改config/index.js和config/prod.env.js文件 对config/...

Vue实现二级菜单的显示与隐藏

1 <html> 2 <head> 3 <title>Vue实现二级菜单的显示与隐藏</title> 4 <script src="vue.js"></script> 5 <style type="text/css"> 6 *{ 7...

Vuejs学习笔记(一)

1)    vue.js 的 主要功能 1、模板渲染 2、模块化 3、扩展功能:路由,Ajax 2)    vue.js 模板渲染之双向绑定示例 message 绑定到了 input 对象,所有在input中的值修改了之后,上面的P 标签的显示的内容也会根据其改变。   3)    app.vue 、main.js和 index.html的关联 (1) m...

Vue 基础篇二

Vue 组件 组件(Component)是Vue.js最强大的功能之一. 组件可以扩展HTML元素,封装可重用的代码,是可复用的Vue实例. 组件的注册 // html 代码 <div id="app"> <my-component></my-component> </div> // js 代码 Vu...

Vuex入门(5)—— 为什么要用Action管理异步操作

Action 类似于 mutation,不同在于: 1.Action 提交的是 mutation,而不是直接变更状态。 2.Action 可以包含任意异步操作。 官方给的定义我没什么意见,事实上我通过mutation异步操作,好像跟用action管理也没什么区别。关于为什么要用Action管理异步操作,我会通过一个简单的例子和一个复杂的例子来进行说明,事实...

老vue项目webpack3升级到webpack5全过程记录(二)

本文接上篇博客记录一些配置的升级过程中遇到的坑。 1、设置mode 通过指定mode参数,启用对应环境下webpack内置的优化。有三个可选参数:development,production,none。默认值为production,生产环境在production模式下,会自动压缩代码,可以去除之前配置的一些压缩代码的插件。 2、use写法不同 rules...