当前位置:首页 > VUE

vue实现通讯录代码

2026-01-12 05:44:38VUE

实现思路

Vue实现通讯录的核心在于数据管理和组件交互。通常需要包含联系人列表、搜索功能、分组索引以及添加/编辑功能。

基本结构

创建Vue组件时需包含以下部分:

  • 数据模型:存储联系人数组
  • 字母索引栏:实现快速跳转
  • 搜索框:过滤联系人
  • 列表渲染:展示联系人信息

核心代码示例

数据模型

data() {
  return {
    contacts: [
      { name: '张三', phone: '13800138000', initial: 'Z' },
      { name: '李四', phone: '13900139000', initial: 'L' }
    ],
    searchText: ''
  }
}

计算属性处理数据

computed: {
  filteredContacts() {
    return this.contacts.filter(item => 
      item.name.includes(this.searchText) || 
      item.phone.includes(this.searchText)
    )
  },
  groupedContacts() {
    const groups = {}
    this.filteredContacts.forEach(item => {
      const initial = item.initial.toUpperCase()
      if (!groups[initial]) {
        groups[initial] = []
      }
      groups[initial].push(item)
    })
    return groups
  },
  initials() {
    return Object.keys(this.groupedContacts).sort()
  }
}

模板部分

<div class="address-book">
  <input v-model="searchText" placeholder="搜索联系人">

  <div class="index-bar">
    <span 
      v-for="initial in initials" 
      :key="initial"
      @click="scrollTo(initial)"
    >
      {{ initial }}
    </span>
  </div>

  <div class="contact-list">
    <div v-for="(group, initial) in groupedContacts" :key="initial">
      <h3 :id="initial">{{ initial }}</h3>
      <div 
        v-for="contact in group" 
        :key="contact.phone"
        class="contact-item"
      >
        <span>{{ contact.name }}</span>
        <span>{{ contact.phone }}</span>
      </div>
    </div>
  </div>
</div>

滚动定位方法

methods: {
  scrollTo(initial) {
    const element = document.getElementById(initial)
    if (element) {
      element.scrollIntoView({ behavior: 'smooth' })
    }
  }
}

样式优化建议

.address-book {
  position: relative;
  height: 100vh;
}
.index-bar {
  position: fixed;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
}
.contact-list {
  overflow-y: auto;
  height: calc(100% - 60px);
}
.contact-item {
  padding: 10px;
  border-bottom: 1px solid #eee;
}

功能扩展建议

  • 添加本地存储功能保存联系人
  • 实现联系人详情页和编辑功能
  • 添加手机震动反馈当点击字母索引时
  • 优化移动端触摸事件处理

性能优化

对于大型通讯录,建议:

vue实现通讯录代码

  • 使用虚拟滚动技术
  • 对列表数据进行分页加载
  • 使用Web Worker处理搜索过滤

以上代码提供了Vue实现通讯录的基本框架,可根据实际需求进行调整和扩展。

标签: 通讯录代码
分享给朋友:

相关文章

css网页制作代码

css网页制作代码

以下是一些常用的CSS网页制作代码示例,涵盖布局、样式和交互效果: 基础布局与样式 重置浏览器默认样式 * { margin: 0; padding: 0; box-sizing: b…

网页表格制作css代码

网页表格制作css代码

基础表格样式 使用CSS为HTML表格添加基础样式,包括边框、间距和背景色: table { width: 100%; border-collapse: collapse; margin…

vue代码核心实现

vue代码核心实现

Vue 核心实现原理 Vue.js 的核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是关键实现要点: 响应式系统 通过 Object.defineProperty(Vue 2)…

代码雨实现vue

代码雨实现vue

实现代码雨效果(Vue版) 使用Vue实现代码雨效果可以通过Canvas绘制结合动画帧实现。以下是完整实现方案: 核心代码结构 <template> <div class="c…

vue实现代码插件

vue实现代码插件

Vue 实现代码插件的方法 使用第三方库(如 Prism.js 或 Highlight.js) 安装 Prism.js 或 Highlight.js 库,这些库专门用于代码高亮显示。在 Vue 项目中…

vue 实现git代码对比

vue 实现git代码对比

Vue 实现 Git 代码对比 在 Vue 中实现 Git 代码对比功能,可以通过集成现有的代码对比库或调用 Git 相关 API 来实现。以下是几种常见的方法: 使用 diff2html 库 di…