当前位置:首页 > VUE

vue实现列表添加

2026-01-14 04:04:21VUE

使用 Vue 实现列表添加功能

数据绑定与列表渲染

在 Vue 中,通过 v-for 指令可以轻松实现列表渲染。首先需要定义一个数组来存储列表数据,并在模板中使用 v-for 循环渲染。

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

<script>
export default {
  data() {
    return {
      items: ['Item 1', 'Item 2', 'Item 3']
    }
  }
}
</script>

添加新项到列表

通过 v-model 绑定输入框的值,并在方法中使用 push 将新项添加到数组。

vue实现列表添加

<template>
  <div>
    <input v-model="newItem" placeholder="Add new item">
    <button @click="addItem">Add</button>
    <ul>
      <li v-for="(item, index) in items" :key="index">
        {{ item }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: ['Item 1', 'Item 2', 'Item 3'],
      newItem: ''
    }
  },
  methods: {
    addItem() {
      if (this.newItem.trim() !== '') {
        this.items.push(this.newItem)
        this.newItem = ''
      }
    }
  }
}
</script>

删除列表项

为每个列表项添加删除按钮,并通过 splice 方法移除指定项。

vue实现列表添加

<template>
  <div>
    <input v-model="newItem" placeholder="Add new item">
    <button @click="addItem">Add</button>
    <ul>
      <li v-for="(item, index) in items" :key="index">
        {{ item }}
        <button @click="removeItem(index)">Delete</button>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: ['Item 1', 'Item 2', 'Item 3'],
      newItem: ''
    }
  },
  methods: {
    addItem() {
      if (this.newItem.trim() !== '') {
        this.items.push(this.newItem)
        this.newItem = ''
      }
    },
    removeItem(index) {
      this.items.splice(index, 1)
    }
  }
}
</script>

使用计算属性优化

如果需要过滤或处理列表数据,可以使用计算属性。

<template>
  <div>
    <input v-model="newItem" placeholder="Add new item">
    <button @click="addItem">Add</button>
    <ul>
      <li v-for="(item, index) in filteredItems" :key="index">
        {{ item }}
        <button @click="removeItem(index)">Delete</button>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: ['Item 1', 'Item 2', 'Item 3'],
      newItem: ''
    }
  },
  computed: {
    filteredItems() {
      return this.items.filter(item => item.includes('Item'))
    }
  },
  methods: {
    addItem() {
      if (this.newItem.trim() !== '') {
        this.items.push(this.newItem)
        this.newItem = ''
      }
    },
    removeItem(index) {
      this.items.splice(index, 1)
    }
  }
}
</script>

使用 Vue 3 的 Composition API

在 Vue 3 中,可以使用 refreactive 来管理状态。

<template>
  <div>
    <input v-model="newItem" placeholder="Add new item">
    <button @click="addItem">Add</button>
    <ul>
      <li v-for="(item, index) in items" :key="index">
        {{ item }}
        <button @click="removeItem(index)">Delete</button>
      </li>
    </ul>
  </div>
</template>

<script>
import { ref } from 'vue'

export default {
  setup() {
    const items = ref(['Item 1', 'Item 2', 'Item 3'])
    const newItem = ref('')

    const addItem = () => {
      if (newItem.value.trim() !== '') {
        items.value.push(newItem.value)
        newItem.value = ''
      }
    }

    const removeItem = (index) => {
      items.value.splice(index, 1)
    }

    return {
      items,
      newItem,
      addItem,
      removeItem
    }
  }
}
</script>

标签: 列表vue
分享给朋友:

相关文章

vue实现路由

vue实现路由

Vue 路由的实现方法 Vue 路由可以通过 Vue Router 库来实现,Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue Router 通…

vue滚动插件实现

vue滚动插件实现

Vue 滚动插件实现方法 使用现有插件(推荐) 对于大多数场景,推荐使用成熟的 Vue 滚动插件,例如 vue-infinite-loading 或 vue-virtual-scroller。这些插件…

实现vue模板解析

实现vue模板解析

Vue 模板解析的基本原理 Vue 的模板解析是将模板字符串转换为渲染函数的过程。核心步骤包括模板编译、AST 生成、优化和代码生成。 模板编译阶段 Vue 使用 vue-template-comp…

vue业务实现

vue业务实现

Vue 业务实现方法 组件化开发 Vue 的核心思想是组件化,将页面拆分为独立可复用的组件。每个组件包含模板、脚本和样式,通过 props 和 events 实现父子通信。大型项目可使用 Vuex 或…

vue实现自动搜索

vue实现自动搜索

实现自动搜索功能 在Vue中实现自动搜索功能通常需要结合输入框的监听事件和防抖技术,避免频繁触发搜索请求。以下是一个完整的实现方案: 使用v-model和watch监听输入变化 通过v-model绑…

vue 实现登录退出

vue 实现登录退出

Vue 实现登录与退出功能 登录功能实现 创建登录表单组件,包含用户名和密码输入框及提交按钮。使用 v-model 双向绑定数据。 <template> <form @subm…