当前位置: 首页 > 编程笔记 >

Vue实现动态添加或者删除对象和对象数组的操作方法

赏彭薄
2023-03-14
本文向大家介绍Vue实现动态添加或者删除对象和对象数组的操作方法,包括了Vue实现动态添加或者删除对象和对象数组的操作方法的使用技巧和注意事项,需要的朋友参考一下

添加核心代码如下:

this.data.push({
      type: [{
       value: '选项1',
       label: 'in'
      },
       {
        value: '选项3',
        label: 'out'
       }],
      value:[{
       value: '选项1',
       label: 'CSV'
      },
       {
        value: '选项3',
        label: 'TSV'
       }],
      parameter:'',
      default:'',
      description:'',
      isDelete:false,
     });

删除核心代码如下:

/*遍历数组,然后根据选中的状态获取对应的下标,然后进行删除*/
     for (let i = 0;i<this.data.length;i++){
      let obj = this.data[i];
      if (obj.isDelete){
       this.data.splice(i,1);
       i--
      }
     }

全部代码如下:

<template>
  <div>
   ============================32、在Vue项目中实现动态添加或者删除对象和对象数组============================
   <div>
    <el-button type="primary" icon="el-icon-plus" @click="add"></el-button>
    <el-button type="primary" icon="el-icon-delete" @click="deleteItem"></el-button>
    <el-row :gutter="50"  v-for="(item,index) in data" :key="index">
     <!--Type-->
     <el-col :span="4">
      <div class="grid-content bg-purple">
       <el-row >
        <el-col :span="24">
         <el-select v-model="value" placeholder="请选择" size="mini">
          <el-option
           v-for="obj in item.type"
           :key="obj.value"
           :label="obj.label"
           :value="obj.value">
          </el-option>
         </el-select>
        </el-col>
       </el-row >
      </div>
     </el-col>
     <!--value-->
     <el-col :span="4">
      <div class="grid-content bg-purple-light">
       <el-row >
        <el-col :span="24">
         <el-select v-model="value" placeholder="请选择" size="mini">
          <el-option
           v-for="obj in item.value"
           :key="obj.value"
           :label="obj.label"
           :value="obj.value">
          </el-option>
         </el-select>
        </el-col>
       </el-row >
      </div>
     </el-col>
     <!--Parameter-->
     <el-col :span="4">
      <div class="grid-content bg-purple">
       <el-input
        size="mini"
        placeholder="请输入内容"
        v-model="item.parameter"
        clearable>
       </el-input>
      </div>
     </el-col>
     <!--Default-->
     <el-col :span="4">
      <div class="grid-content bg-purple-light">
       <el-input
        size="mini"
        placeholder="请输入内容"
        v-model="item.default"
        clearable>
       </el-input>
      </div>
     </el-col>
     <!--Description-->
     <el-col :span="4">
      <div class="grid-content bg-purple">
       <el-input
        size="mini"
        placeholder="请输入内容"
        v-model="item.description"
        clearable>
       </el-input>
      </div>
     </el-col>
     <!--Del-->
     <el-col :span="4">
      <div class="grid-content bg-purple-light " id="checkboxSpacingDiv">
       <!-- `checked` 为 true 或 false -->
       <el-checkbox v-model="item.isDelete" size="medium"></el-checkbox>
      </div>
     </el-col>
    </el-row>
   </div>
  </div>
</template>
<script>
  export default {
    name: "VueArrays_32",
   data(){
     return {
      data:[
       {
        type: [{
         value: '选项1',
         label: 'in'
        },
         {
          value: '选项3',
          label: 'out'
         }],
        value:[{
         value: '选项1',
         label: 'CSV'
        },
         {
          value: '选项3',
          label: 'TSV'
         }],
        parameter:'',
        default:'',
        description:'',
        isDelete:false,
       },
      ],
     }
   },
   methods:{
    add(){
     this.data.push({
      type: [{
       value: '选项1',
       label: 'in'
      },
       {
        value: '选项3',
        label: 'out'
       }],
      value:[{
       value: '选项1',
       label: 'CSV'
      },
       {
        value: '选项3',
        label: 'TSV'
       }],
      parameter:'',
      default:'',
      description:'',
      isDelete:false,
     });
    },
    deleteItem(){
     /*遍历数组,然后根据选中的状态获取对应的下标,然后进行删除*/
     for (let i = 0;i<this.data.length;i++){
      let obj = this.data[i];
      if (obj.isDelete){
       this.data.splice(i,1);
       i--
      }
     }
    }
   }
  }
</script>
<style scoped>
</style>

 效果图如下:

总结

以上所述是小编给大家介绍的Vue实现动态添加或者删除对象和对象数组的操作方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 本文向大家介绍Python实现动态给类和对象添加属性和方法操作示例,包括了Python实现动态给类和对象添加属性和方法操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现动态给类和对象添加属性和方法操作。分享给大家供大家参考,具体如下: 动态给类和对象添加属性 定义一个Person类 给对象添加属性 运行结果: amy 10 anne 18 给类添加属性 运行结果: f

  • 本文向大家介绍JS实现给对象动态添加属性的方法,包括了JS实现给对象动态添加属性的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS实现给对象动态添加属性的方法。分享给大家供大家参考,具体如下: 在工作用要用到给jd对象动态添加属性的要求,在网上找到了一种解决方式,实例如下: 1、demo 这种方式试过确实可以 2、项目中使用 遍历input获取值,js对象动态添加属性和属性值。 更

  • 链接列表 o void add(Train)-创建一个包含参数对象的新节点,并将该节点添加到列表中,使列表保持升序排序。 o Train delete(int)-在列表中搜索带有参数车次的列车。如果找到它,从列表中删除它,并返回Train对象。如果找不到,则返回NULL。 我的添加和删除没有正常工作。我不知道如何删除车次。不使用节点的索引不知道怎么做。

  • 本文向大家介绍vue 使用lodash实现对象数组深拷贝操作,包括了vue 使用lodash实现对象数组深拷贝操作的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,大家还是直接看代码吧~ 如果本篇文章对你有帮助的话,很高兴能够帮助上你。 补充知识:vue iview上传多文件只发送一次ajax请求,并根据上传进度显示上传进度条 前言 基于iview的上传组件(Upload)以及进度条组件

  • 问题 你想实现一个状态机或者是在不同状态下执行操作的对象,但是又不想在代码中出现太多的条件判断语句。 解决方案 在很多程序中,有些对象会根据状态的不同来执行不同的操作。比如考虑如下的一个连接对象: class Connection: """普通方案,好多个判断语句,效率低下~~""" def __init__(self): self.state = 'CLOSED

  • 本文向大家介绍在Vue组件上动态添加和删除属性方法,包括了在Vue组件上动态添加和删除属性方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 在组件上添加属性 this.$set(this.data,"obj",value'); 删除属性this.$delete(this.data,"obj",value'); 以上这篇在Vue组件上动态添加和删除属性方法就是小编分享给大家的全部内容了,希望