当前位置:首页 > VUE

vue通讯录实现

2026-02-20 21:21:28VUE

实现 Vue 通讯录功能

通讯录功能通常包括联系人列表展示、搜索、分组和增删改查等操作。以下是基于 Vue 的实现方法:

vue通讯录实现

数据准备

定义通讯录数据结构,通常包含姓名、电话、分组等信息:

vue通讯录实现

data() {
  return {
    contacts: [
      { name: '张三', phone: '13800138000', group: '家人' },
      { name: '李四', phone: '13900139000', group: '朋友' },
      // 更多联系人...
    ],
    searchText: '',
    currentGroup: '全部'
  }
}

列表展示

使用 v-for 渲染联系人列表,添加筛选功能:

<template>
  <div class="contact-list">
    <input v-model="searchText" placeholder="搜索联系人">
    <select v-model="currentGroup">
      <option value="全部">全部</option>
      <option v-for="group in groups" :value="group">{{ group }}</option>
    </select>

    <ul>
      <li v-for="contact in filteredContacts" :key="contact.phone">
        {{ contact.name }} - {{ contact.phone }}
        <span class="group-tag">{{ contact.group }}</span>
      </li>
    </ul>
  </div>
</template>

计算属性处理筛选逻辑

computed: {
  groups() {
    return [...new Set(this.contacts.map(c => c.group))]
  },
  filteredContacts() {
    return this.contacts.filter(contact => {
      const matchSearch = contact.name.includes(this.searchText) || 
                         contact.phone.includes(this.searchText)
      const matchGroup = this.currentGroup === '全部' || 
                        contact.group === this.currentGroup
      return matchSearch && matchGroup
    })
  }
}

添加联系人功能

<div class="add-contact">
  <input v-model="newContact.name" placeholder="姓名">
  <input v-model="newContact.phone" placeholder="电话">
  <select v-model="newContact.group">
    <option v-for="group in groups" :value="group">{{ group }}</option>
  </select>
  <button @click="addContact">添加</button>
</div>
methods: {
  addContact() {
    if (this.newContact.name && this.newContact.phone) {
      this.contacts.push({...this.newContact})
      this.newContact = { name: '', phone: '', group: '朋友' }
    }
  }
}

样式优化

添加基础样式增强用户体验:

.contact-list {
  max-width: 600px;
  margin: 0 auto;
}
.contact-list li {
  padding: 10px;
  border-bottom: 1px solid #eee;
}
.group-tag {
  float: right;
  color: #666;
  font-size: 0.8em;
}

进阶功能建议

  1. 使用 Vuex 管理通讯录状态,实现跨组件共享
  2. 添加本地存储功能,使用 localStorage 持久化数据
  3. 实现联系人详情页和编辑功能
  4. 添加字母索引快速导航
  5. 集成后端API实现数据同步

这个实现提供了通讯录的核心功能,可以根据实际需求进一步扩展和完善。

标签: 通讯录vue
分享给朋友:

相关文章

vue 动画实现

vue 动画实现

Vue 动画实现方式 Vue 提供了多种方式实现动画效果,主要分为内置组件和第三方库集成。 使用 Vue 内置过渡组件 Vue 的 <transition> 和 <transiti…

vue实现tabs

vue实现tabs

Vue实现Tabs组件的方法 使用动态组件和v-for指令 在Vue中创建Tabs组件可以通过动态组件和v-for指令实现。定义一个包含tab标题和内容的数组,使用v-for渲染tab标题,并通过点击…

vue实现首页

vue实现首页

Vue 实现首页的基本步骤 安装 Vue.js 和相关依赖,可以通过 Vue CLI 或 Vite 快速初始化项目。Vue CLI 适合传统项目,Vite 更适合现代前端开发。 npm instal…

vue实现前端路由

vue实现前端路由

Vue 实现前端路由的方法 Vue 可以通过 Vue Router 实现前端路由管理。以下是具体实现步骤: 安装 Vue Router 通过 npm 或 yarn 安装 Vue Router: n…

vue怎么实现滑动

vue怎么实现滑动

Vue实现滑动效果的方法 在Vue中实现滑动效果可以通过多种方式,以下是几种常见的方法: 使用CSS过渡和动画 通过Vue的过渡系统和CSS可以实现平滑的滑动效果。定义一个CSS类,利用transf…

vue实现点击涟漪

vue实现点击涟漪

Vue 实现点击涟漪效果 在 Vue 中实现点击涟漪效果可以通过自定义指令或使用第三方库完成。以下是两种常见方法: 自定义指令实现 创建自定义指令 v-ripple,动态生成涟漪元素并添加动画效果…