当前位置:首页 > VUE

vue实现添加行

2026-01-18 13:37:29VUE

Vue 实现添加行的基本方法

在 Vue 中实现表格或列表的动态添加行功能,可以通过操作数据数组结合 v-for 指令完成。以下是两种常见场景的实现方式:

基础表格添加行

<template>
  <div>
    <table>
      <tr v-for="(item, index) in items" :key="index">
        <td>{{ item.name }}</td>
        <td>{{ item.value }}</td>
      </tr>
    </table>
    <button @click="addRow">添加行</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { name: '默认行', value: 0 }
      ]
    }
  },
  methods: {
    addRow() {
      this.items.push({
        name: '新行',
        value: this.items.length
      })
    }
  }
}
</script>

表单输入添加行

对于需要用户输入后添加的场景:

<template>
  <div>
    <input v-model="newItem.name" placeholder="名称">
    <input v-model="newItem.value" placeholder="值" type="number">
    <button @click="addRow">添加</button>

    <ul>
      <li v-for="(item, index) in items" :key="index">
        {{ item.name }}: {{ item.value }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      newItem: { name: '', value: 0 },
      items: []
    }
  },
  methods: {
    addRow() {
      if (this.newItem.name.trim()) {
        this.items.push({...this.newItem})
        this.newItem = { name: '', value: 0 } // 重置表单
      }
    }
  }
}
</script>

使用 Vue 3 Composition API

Vue 3 的响应式系统可以更简洁地实现:

<template>
  <button @click="addRow">添加随机数据行</button>
  <div v-for="(row, index) in rows" :key="index">
    行 {{ index }}: {{ row.data }}
  </div>
</template>

<script setup>
import { ref } from 'vue'

const rows = ref([])

const addRow = () => {
  rows.value.push({
    data: Math.random().toString(36).substring(7)
  })
}
</script>

注意事项

  • 为动态生成的元素添加唯一 key 属性,通常使用索引或唯一ID
  • 复杂表格建议使用专门的表格组件库如 Element UIVuetify
  • 大量数据时考虑虚拟滚动优化性能

扩展功能

实现可删除行的完整示例:

<template>
  <div>
    <button @click="addRow">+ 添加行</button>
    <table>
      <tr v-for="(row, index) in rows" :key="row.id">
        <td><input v-model="row.content"></td>
        <td><button @click="removeRow(index)">删除</button></td>
      </tr>
    </table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      rows: [],
      nextId: 1
    }
  },
  methods: {
    addRow() {
      this.rows.push({
        id: this.nextId++,
        content: ''
      })
    },
    removeRow(index) {
      this.rows.splice(index, 1)
    }
  }
}
</script>

vue实现添加行

标签: vue
分享给朋友:

相关文章

vue的动画实现

vue的动画实现

Vue 动画实现方式 Vue 提供了多种方式实现动画效果,主要通过内置组件和第三方库支持。 使用 Vue 内置过渡组件 Vue 的 transition 和 transition-group 组件可…

vue实现tab换行

vue实现tab换行

Vue实现Tab切换的常见方法 使用Vue实现Tab切换功能可以通过多种方式完成,以下是几种常见的方法: 动态组件结合v-if或v-show 通过v-if或v-show控制不同Tab内容的显示与隐…

vue实现多级表头

vue实现多级表头

Vue 实现多级表头的方法 使用 el-table 组件 Element UI 的 el-table 组件支持多级表头的实现,通过嵌套 el-table-column 即可完成。 <el-t…

vue表单实现搜索

vue表单实现搜索

实现Vue表单搜索功能 在Vue中实现表单搜索功能通常涉及表单绑定、事件处理和搜索逻辑。以下是具体实现方法: 数据绑定与表单结构 使用v-model实现表单与Vue数据的双向绑定: <tem…

vue实现视频会议

vue实现视频会议

使用 Vue 实现视频会议 技术选型 Vue.js 作为前端框架,结合 WebRTC 技术实现实时音视频通信。常用的库包括: peerjs:简化 WebRTC 的点对点连接。 socket.io:用…

vue实现右下角弹框

vue实现右下角弹框

实现右下角弹框的基本思路 在Vue中实现右下角弹框,通常需要结合CSS定位和Vue的组件化特性。弹框可以通过绝对定位固定在右下角,并通过Vue控制其显示与隐藏。 创建弹框组件 新建一个Vue组件(…