当前位置:首页 > VUE

vue实现名字查找功能

2026-03-06 19:59:57VUE

实现名字查找功能的方法

在Vue中实现名字查找功能可以通过多种方式,以下是几种常见的方法:

使用v-model和computed属性

创建一个输入框绑定到v-model,利用computed属性过滤列表:

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索名字" />
    <ul>
      <li v-for="item in filteredList" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      searchQuery: '',
      items: [
        { id: 1, name: '张三' },
        { id: 2, name: '李四' },
        { id: 3, name: '王五' }
      ]
    }
  },
  computed: {
    filteredList() {
      return this.items.filter(item =>
        item.name.toLowerCase().includes(this.searchQuery.toLowerCase())
      )
    }
  }
}
</script>

使用watch和methods

vue实现名字查找功能

当需要更复杂的搜索逻辑时,可以使用watch配合methods:

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索名字" />
    <ul>
      <li v-for="item in filteredItems" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      searchQuery: '',
      items: [
        { id: 1, name: '张三' },
        { id: 2, name: '李四' },
        { id: 3, name: '王五' }
      ],
      filteredItems: []
    }
  },
  watch: {
    searchQuery(newVal) {
      this.filterItems(newVal)
    }
  },
  methods: {
    filterItems(query) {
      this.filteredItems = this.items.filter(item =>
        item.name.toLowerCase().includes(query.toLowerCase())
      )
    }
  },
  created() {
    this.filterItems('')
  }
}
</script>

使用第三方库

对于大型数据集,可以考虑使用lodash的debounce函数优化性能:

vue实现名字查找功能

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索名字" />
    <ul>
      <li v-for="item in filteredItems" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

<script>
import _ from 'lodash'

export default {
  data() {
    return {
      searchQuery: '',
      items: [
        { id: 1, name: '张三' },
        { id: 2, name: '李四' },
        { id: 3, name: '王五' }
      ],
      filteredItems: []
    }
  },
  watch: {
    searchQuery: _.debounce(function(newVal) {
      this.filterItems(newVal)
    }, 300)
  },
  methods: {
    filterItems(query) {
      this.filteredItems = this.items.filter(item =>
        item.name.toLowerCase().includes(query.toLowerCase())
      )
    }
  },
  created() {
    this.filterItems('')
  }
}
</script>

使用Vuex管理状态

当应用状态需要全局管理时:

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索名字" />
    <ul>
      <li v-for="item in filteredItems" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

<script>
import { mapState, mapGetters } from 'vuex'

export default {
  data() {
    return {
      searchQuery: ''
    }
  },
  computed: {
    ...mapState(['items']),
    ...mapGetters(['filteredItems']),
    searchQuery: {
      get() {
        return this.$store.state.searchQuery
      },
      set(value) {
        this.$store.commit('updateSearchQuery', value)
      }
    }
  }
}
</script>

高级搜索功能

实现更复杂的搜索功能,如多字段搜索或模糊搜索:

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索名字或拼音" />
    <ul>
      <li v-for="item in filteredItems" :key="item.id">
        {{ item.name }} ({{ item.pinyin }})
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      searchQuery: '',
      items: [
        { id: 1, name: '张三', pinyin: 'zhang san' },
        { id: 2, name: '李四', pinyin: 'li si' },
        { id: 3, name: '王五', pinyin: 'wang wu' }
      ]
    }
  },
  computed: {
    filteredItems() {
      const query = this.searchQuery.toLowerCase()
      return this.items.filter(item =>
        item.name.toLowerCase().includes(query) ||
        item.pinyin.includes(query)
      )
    }
  }
}
</script>

以上方法可以根据实际需求选择或组合使用,实现高效的名字查找功能。

标签: 名字功能
分享给朋友:

相关文章

vue 实现筛选功能

vue 实现筛选功能

实现筛选功能的基本思路 在Vue中实现筛选功能通常涉及以下几个核心步骤:数据绑定、筛选逻辑处理、结果展示。以下是具体实现方法。 数据准备 准备需要筛选的数据源,通常是一个数组,可以存储在Vue组件的…

vue实现聊天功能

vue实现聊天功能

Vue实现聊天功能的方法 使用WebSocket实现实时通信 安装WebSocket客户端库如socket.io-client,在Vue组件中建立连接。创建一个消息列表和数据输入框,通过WebSock…

vue实现审核功能

vue实现审核功能

实现审核功能的基本思路 审核功能通常涉及状态管理、权限控制和操作记录。Vue中可以通过组件化设计、状态管理库(如Vuex或Pinia)和后端API配合实现。 审核状态管理 使用Vuex或Pinia存…

uniapp实现支付功能

uniapp实现支付功能

支付功能实现概述 在UniApp中实现支付功能通常需要对接第三方支付平台(如微信支付、支付宝支付等)。以下是基于微信支付和支付宝支付的通用实现流程。 微信支付实现步骤 1. 配置支付权限 在微信开放…

vue实现付费功能

vue实现付费功能

Vue 实现付费功能的方法 集成第三方支付平台 选择适合的第三方支付平台(如支付宝、微信支付、Stripe、PayPal等),并按照其文档进行集成。在 Vue 项目中,可以通过引入支付平台的 SDK…

php购物车功能实现

php购物车功能实现

数据库设计 购物车功能通常需要设计数据库表来存储商品和用户信息。常见的表包括: products 表:存储商品信息,如商品ID、名称、价格、库存等。 users 表:存储用户信息,如用户ID、用户名…