vue实现全匹配搜索列表内容

下面是基于Vue实现全匹配搜索列表内容的完整攻略及示例说明:

1. 实现思路:

  • 创建一个Vue实例
  • 在data中定义一个数据列表,例如list: ['apple', 'banana', 'orange', 'pear', 'watermelon', 'grape']
  • 在data中定义一个搜索关键字,例如keyword: ''
  • 通过computed计算属性对数据列表进行过滤,得到一个新的数据列表
  • 在页面中通过v-model实时绑定搜索关键字
  • 在页面中通过v-for指令遍历过滤后的新的数据列表,渲染到页面中

2. 代码示例:

示例一:基本实现

下面是一个基本的示例,演示了如何通过Vue实现全匹配搜索列表内容:

<template>
  <div>
    <h3>搜索:</h3>
    <input type="text" v-model="keyword">
    <h3>结果:</h3>
    <ul>
      <li v-for="item in filteredList">{{ item }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  data () {
    return {
      list: ['apple', 'banana', 'orange', 'pear', 'watermelon', 'grape'],
      keyword: ''
    }
  },
  computed: {
    filteredList () {
      return this.list.filter(item => {
        return item.toLowerCase().indexOf(this.keyword.toLowerCase()) > -1
      })
    }
  }
}
</script>

这个示例中,我们通过在computed中定义filteredList过滤计算属性,将过滤后的列表数据传递给页面进行展示。

示例二:带有debounce的搜索

下面是一个稍微复杂一些的示例,演示了如何在基本实现的基础上,加入debounce延迟搜索等功能:

<template>
  <div>
    <h3>搜索:</h3>
    <input type="text" v-model="keyword" @keyup="handleKeyup">
    <h3>结果:</h3>
    <ul>
      <li v-for="item in filteredList">{{ item }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  data () {
    return {
      list: ['apple', 'banana', 'orange', 'pear', 'watermelon', 'grape'],
      keyword: ''
    }
  },
  computed: {
    filteredList () {
      return this.list.filter(item => {
        return item.toLowerCase().indexOf(this.keyword.toLowerCase()) > -1
      })
    }
  },
  methods: {
    handleKeyup: _.debounce(function () {
      console.log('trigger search...')
    }, 500)
  }
}
</script>

这个示例中,我们引入了lodash的debounce方法,并结合methods中的handleKeyup函数,实现了延迟搜索的效果。

3. 总结:

通过上面的两个示例,我们基本上掌握了如何通过Vue实现全匹配搜索列表内容。首先,我们需要在data中定义包含所有数据的列表,其次,在computed中定义一个filteredList过滤计算属性,在其中通过过滤方法对列表进行过滤。最后,在页面中使用v-model绑定一个搜索关键字,通过v-for遍历被过滤后的新的数据列表,将结果渲染到页面中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue实现全匹配搜索列表内容 - Python技术站

(1)
上一篇 2023年5月29日
下一篇 2023年5月29日

相关文章

  • vue使用websocket的方法实例分析

    Vue使用WebSocket的方法实例分析 WebSocket是一种在单个TCP连接上进行全双工通信的协议。Vue.js是一个流行的JavaScript框架,常用于前端开发。在Vue中使用WebSocket可以实现实时更新数据等功能。本文将详细讲解在Vue中使用WebSocket的方法实例分析。 前置要求 在使用WebSocket之前,需要确保以下内容: 安…

    Vue 2023年5月28日
    00
  • Vue3.x的版本中build后dist文件中出现legacy的js文件问题

    Vue 3.x的版本中build后dist文件中出现legacy的js文件问题,是由于在Vue 3.x的版本中,开发团队加入了 Webpack 5 的新特性—— 模块还原 /esModule,这些变化导致了一些旧版浏览器中无法兼容这些新特性,因此需要生成一个legacy版本的js文件来兼容这些浏览器。 以下是如何解决这个问题的完整攻略: 1.修改 packa…

    Vue 2023年5月28日
    00
  • vue-cli脚手架初始化项目各个文件夹用途

    当使用Vue.js来开发项目时,可以使用Vue CLI脚手架工具来初始化项目。通过Vue CLI初始化的项目,会自动创建多个文件夹和文件,它们的用途如下: /public 文件夹:该文件夹下存放的是一些静态文件,如图标和页面。其中,/public/index.html 文件是整个应用的入口文件,是应用的模板。 /src 文件夹:该文件夹是主要的开发目录,包含…

    Vue 2023年5月27日
    00
  • Vue 中 createElement 使用实例详解

    下面我给出“Vue 中createElement 使用实例详解”的完整攻略,包括基本语法和两条示例说明。 What is createElement? createElement 是 Vue 的一个渲染函数,它通过 JavaScript 代码的方式生成虚拟 DOM。通过 createElement 我们能够在 JS 代码中定义 Vue 的组件,从而实现动态渲…

    Vue 2023年5月29日
    00
  • Vue.js每天必学之计算属性computed与$watch

    下面是详细讲解 Vue.js 中计算属性 computed 与 $watch 的攻略。 计算属性 computed 概念 计算属性是一种带有缓存功能的属性,它依赖于其它属性值,并且其返回值会根据这些被依赖的值变化而改变。计算属性除了需要响应式依赖,还可以拥有自己的缓存,只要它所依赖的属于没有发生改变,那么多次读取该计算属性时,只会进行一次计算。 用法 我们可…

    Vue 2023年5月29日
    00
  • vue3中使用router4 keepalive的问题

    请跟我一起详细了解“vue3中使用router4 keepalive的问题”的完整攻略。 什么是keep-alive <keep-alive>是Vue.js提供的一个内置组件,它用于缓存组件,可以防止组件重复渲染以提高性能。<keep-alive>的最常用法是动态地根据路由渲染不同的组件,例如: <template> &l…

    Vue 2023年5月27日
    00
  • Vue中使用JsonView来展示Json树的实例代码

    下面是关于“Vue中使用JsonView来展示Json树的实例代码”完整攻略的详细解释: 什么是JsonView? JsonView(也称为JSON Viewer)是一种用于查看JSON数据的工具,它可以将JSON格式的数据转化为可读性高的树状结构。在Vue中,我们可以借助JsonView插件来展示JSON数据的树状结构,让JSON数据更加易读易操作。 安装…

    Vue 2023年5月28日
    00
  • vue-cli3搭建项目的详细步骤

    下面是vue-cli3搭建项目的详细步骤攻略: 步骤一:安装vue-cli3 在命令行中输入以下命令安装 vue-cli3: npm install -g @vue/cli 这里使用了 npm 工具来安装 @vue/cli 包,该工具是 Node.js 官方提供的安装包管理工具。 步骤二:创建新项目 在命令行中输入以下命令来创建新的 Vue 项目: vue …

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部