vue 数组添加数据方式

 更新时间:2022年08月23日 16:15:55   作者:Now_li  
这篇文章主要介绍了vue 数组添加数据方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vue 数组添加数据

数据添加分为三种方法

  • 1.unshift()
  • 2.push()
  • 3.splice()
<template>
      <div>
        <ul>
          <li v-for="(time,index) of listTable" :key="index" @click="copyNew(time,index)">
            {{time.id}}{{time.name1}}{{time.name2}} 添加
          </li>
        </ul>
    </div>
</template>
<script>
export default {
     data(){
        return{
          listTable:[
            {id:'1',name1:'a1',name2:'b1'},
            {id:'2',name1:'a2',name2:'b2'},
            {id:'3',name1:'a3',name2:'b3'},
          ],
        }
      },
 }
 </script>

1.unshift() //数组头部添加一条新数据

let newList = {
   id:'4'
   name1:'a4',
   name2:'b4',
 }
this.listTable.unshift(newList)  //unshift()在数组头部添加一条数据 
console.log(this.listTable)

2.push() //数组末端添加一条新数据

this.listTable.push(newList)  //push()在数组末端添加一条数据 
console.log(this.listTable)

3.splice() //数组操作

 copyNew(time,index){
   console.log(time)
   let newList = {
     id:time.id,
     name1:time.name1,
     name2:time.name2,
   }
   //第一个参数为需要操作数据的下标,第二个参数为操作添加/删除(0为添加,1为不操作,2为删除,3为删除多条数据),第三个参数可选
   this.listTable.splice(index,0,newList) 
   console.log(this.listTable)
 }

4.concat() // 数组合并

let arrA = [1,2,3]
let arrB = [4,5]
arrA.concat(arrB) // 输出 1,2,3,4,5
let arrC = [6,7]
arrA.concat(arrB,arrC) // 输出 1,2,3,4,5,6,7

动态向数组中添加对象(关于v-for,input和push)

核心:深拷贝

第一步:

写在data(): 设datas数组,以及datas中需求的对象

datas: [],
data_formInput: {
    keyword: '',//关键字
    describe: '',//描述
},

第二步:(对象中的属性,input中的数据)双向绑定

<view class="box" v-show="box_show">
    <view class="box_text">请输入关键字</view><input type="text" v-model="data_formInput.keyword" />
    <view class="box_text">请输入描述</view><input type="text" v-model="data_formInput.describe" />
    <button type="default" @click='create'>确定</button>
</view>

第三步:深拷贝保存数据并置空input

create() {
//这里要设一个对象来进行深拷贝才能避免每次push的时候都被最后一次提交的数据覆盖,也可以避免置空的时候数据丢失
    let obj = {
        keyword: this.data_formInput.keyword,
        describe: this.data_formInput.describe
    }
    this.datas.push(obj);
    this.data_formInput.keyword = ''//提交input之后置空
    this.data_formInput.describe = ''
},

第四步:循环显示刚刚input提交的数据

<button type="default" v-for="(item,index) in datas" :key='index' @click='open(item.describe)'>
      {{item.keyword}}
</button>

放一段完整代码:

挺多的,实现了点击添加关键字按钮的时候打开输入关键字和描述,提交的页面,点击提交的时候显示已保存的关键字数据。逻辑很简单,主要是记录一下这里的深拷贝。

<template>
    <view class="">
        
        
        <!-- 这里是输入关键字和描述 -->
        <view class="box" v-show="box_show">
            <view class="box_text">请输入关键字</view><input type="text" v-model="data_formInput.keyword" />
            <view class="box_text">请输入描述</view><input type="text" v-model="data_formInput.describe" />
            <button type="default" @click='create'>确定</button>
        </view>
        
        
        
        <!-- 这里显示已提交的关键字以及添加关键字按钮 -->
        <view v-show="button_show">
            <button type="default" v-for="(item,index) in datas" :key='index'
                @click='open(item.describe)'>{{item.keyword}}</button>
            <u-popup :show="show" @close="close" mode="center" round=20 closeable=true>
                <view>
                    {{show_describe}}
                </view>
            </u-popup>
            <button type="default" @click='open_box'>添加关键字</button>
        </view>
        
        
    </view>
</template>
<script>
    export default {
        data() {
            return {
                datas: [],
                data_formInput: {
                    keyword: '', //关键字
                    describe: '', //描述
                },
                show_describe: '',
                show: false,
                box_show: false,
                button_show: true,
            }
        },
        methods: {
            create() {
                let obj = {
                    keyword: this.data_formInput.keyword,
                    describe: this.data_formInput.describe
                }
                this.datas.push(obj);
                this.data_formInput.keyword = ''//提交input之后置空
                this.data_formInput.describe = ''
                this.box_show = false
                this.button_show = true
            },
            // 打开描述
            open(t) {
                this.show = true
                this.show_describe = t
            },
            close() {
                this.show = false
            },
            open_box() {
                this.box_show = true
                this.button_show = false
            }
        }
    }
</script>
<style scoped>
    .box {
        width: 100%;
        height: 500rpx;
        overflow: hidden;
        /* margin-top: 50rpx; */
        background-image: url(https://pic.imgdb.cn/item/624c0962239250f7c58f97a2.png);
        background-repeat: no-repeat;
        background-size: cover;
    }
    .box_text {
        text-align: center;
        margin-bottom: 20rpx;
    }
    input {
        width: 80%;
        height: 30rpx;
        border: 1rpx solid black;
        margin-top: 50rpx;
        overflow: hidden;
        margin: 10rpx auto;
        padding-left: 20rpx;
        font-size: 25rpx;
    }
</style>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • el-form-item中表单项label和表单项内容换行实现方法

    el-form-item中表单项label和表单项内容换行实现方法

    这篇文章主要给大家介绍了el-form-item中表单项label和表单项内容换行实现的相关资料,每个表单el-form由多个表单域el-form-item组成,需要的朋友可以参考下
    2023-09-09
  • 解决VUE双向绑定失效的问题

    解决VUE双向绑定失效的问题

    今天小编就为大家分享一篇解决VUE双向绑定失效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • Vue 组件之间的通信方式详解

    Vue 组件之间的通信方式详解

    在 Vue.js 中,组件是构建应用程序的基本单位,然而,当你的应用程序变得复杂时,组件之间的通信变得至关重要,本文将介绍几种 Vue 组件之间通信的方式,帮助你更好地管理和组织代码,感兴趣的朋友一起看看吧
    2024-06-06
  • Vue3+Vite实现一个Markdown编辑器组件

    Vue3+Vite实现一个Markdown编辑器组件

    在现代前端开发中,Markdown 编辑器广泛应用于博客,文档,Wiki,代码注释等场景,本文将使用 Vue 3 构建一个简单的 Markdown 编辑器组件,感兴趣的小伙伴可以了解下
    2025-04-04
  • vue中使用腾讯云Im的示例

    vue中使用腾讯云Im的示例

    这篇文章主要介绍了vue中使用腾讯云Im的示例,帮助大家调用对应的api,完成自己的项目,感兴趣的朋友可以了解下
    2020-10-10
  • Vue模拟el-table演示插槽用法的示例详解

    Vue模拟el-table演示插槽用法的示例详解

    很多人知道插槽分为三种,但是实际到elementui当中为什么这么用,就一脸懵逼,接下来就跟大家聊一聊插槽在elementui中的应用,并且自己写一个类似el-table的组件,感兴趣的可以了解一下
    2023-05-05
  • vue组件(全局,局部,动态加载组件)

    vue组件(全局,局部,动态加载组件)

    组件是Vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。这篇文章主要介绍了vue组件(全局,局部,动态加载组件),需要的朋友可以参考下
    2018-09-09
  • 详解Vue监听数据变化原理

    详解Vue监听数据变化原理

    本篇文章主要介绍了Vue监听数据变化,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Vue实例简单方法介绍

    Vue实例简单方法介绍

    这篇文章主要为大家详细介绍了Vue实例的一些简单方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • vue 实现用户登录方式的切换功能

    vue 实现用户登录方式的切换功能

    这篇文章主要介绍了vue 实现用户登录方式的切换功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04

最新评论