<template>
  <div class="about">
    <div>
      <input type="text" placeholder="留言人" v-model="obj.name" />
      <input type="text" placeholder="内容" v-model="obj.con" />
      <input type="date" v-model="obj.time" />
      <button @click="add">添加</button>
    </div>
    <table border="1">
      <tr v-for="(item,index) in infos" :key="index">
        <!-- index是下标,获取索引的值 索引是从0 开始的所以加一 -->
        <td>{{index+1}}{{item.id}}</td>
        <td>{{item.name}}</td>
        <td>{{item.con}}</td>
        <td>{{item.time}}</td>
        <td>
          <button @click="edit(item)">编辑</button>
          <button @click="del(index)">删除</button>
        </td>
      </tr>
    </table>
    <div v-show="flag">
      <!-- v-show 显示隐藏 单纯的添加样式   v-if 销毁整个dom -->
      <label for>姓名</label>
      <input type="text" v-model="editdetail.name" />
      <br />
      <label for>内容</label>
      <input type="text" v-model="editdetail.con" />
      <br />
      <label for>时间</label>
      <input type="text" v-model="editdetail.time" />
      <br />
      <button @click="change()">更新</button>
      <button @click="flag=false">取消</button>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      flag: false, //弹窗的显示隐藏
      editdetail: {},
      obj: {
        name: "",
        con: "",
        time: "",
     
      },
      infos: [{ name: "张三", con: "吃饭了吗", time: "2020-06-14", id: 1 }]
    };
  },
  methods: {
    //增
    add() {
      // 必填项和非必填  判断
    //获取id   连接数据库,方法接收点击事件传过来的id
      if (!this.obj.name || !this.obj.con || !this.obj.time) return;
      var _id =   Math.max( ...this.infos.map(function(v) {
            return v.id;
          })
        ) + 1;
      //追加 v-model配合双向绑定
      this.infos.push({
        name: this.obj.name,
        con: this.obj.con,
        time: this.obj.time,
        id: _id
      });
      //id自动递增  获取索引 新东西
      //  清空input的值 校验处理
      this.obj = {};
      // (this.obj.name = ""), (this.obj.con = ""), (this.obj.time = "");
    },
    //删除组件,必须获取对应的下标索引
    del(index) {
      this.infos.splice(index, 1); //三个值 index从哪里才是  1删除一条数据
    },
    //编辑组件 查   item 循环对应的每一个值 与他内容一一对应
    edit(item) {
      //就是显示弹层
      // this.editdetail = item;//对象赋值是引用关系
      this.flag = true; //弹层
      // 为了防止连动,对象赋值是引用关系,原有发生变化是她会随着变化
      // 解决办法
      this.editdetail = {
        name: item.name,
        con: item.con,
        time: item.time, //重新指向
        id: item.id
      };
      //更新  生拷贝
    },
    //改
    change() {
      //数据更新
      for (var i = 0; i < this.infos.length; i++) {
        if (this.infos[i].id == this.editdetail.id) {
          this.infos[i] = this.editdetail;
          console.log(this.infos[i].id);
          console.log(this.editdetail);
          this.flag = false; //弹窗
        }
      }
    }
  }
};
</script>
<style >
td {
  width: 400px;
}
/*
 Map() 循环遍历 有返回值
forEach() 无返回值
...扩展运算符es6 对当前数组进行序列化 就是拿到数组的结果  
var _id=Math.max(...this.infos.map(function(item){
  return item.id  循环拿到对应的id值
  }))+1;
 
 */
</style>

vue的增删改查(简单版)的更多相关文章

  1. WPF MVVM+EF增删改查 简单示例(二) 1对1 映射

    WPF MVVM+EF增删改查 简单示例(一)实现了对学生信息的管理. 现在需求发生变更,在录入学生资料的时候同时需要录入学生的图片信息,并且一名学生只能有一张图片资料.并可对学生的图片资料进行更新. ...

  2. NX二次开发-NX访问SqlServer数据库(增删改查)C#版

    版本:NX9+VS2012+SqlServer2008r2 以前我写过一个NX访问MySQL数据库(增删改查)的文章https://www.cnblogs.com/nxopen2018/p/12297 ...

  3. vue实现增删改查(内附源代码)

    VUE+Element实现增删改查 @ 目录 VUE+Element实现增删改查 前言 实验步骤 总结: 源代码 前言 &最近因为一些原因,没有更博客,昨天老师布置了一个作业,用vue实现增删 ...

  4. 安卓版php服务器的mysql数据库增删改查简单案例

    界面: index.php文件: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...

  5. vue的增删改查

    我们把这些用户信息保存到list的数组中,然后增删改查就在这个数组上进行: list: [ { username: 'aaaaa', email: '123@qq.com', sex: '男', pr ...

  6. webpack4+express+mongodb+vue 实现增删改查

    在讲解之前,我们先来看看效果如下所示: 1)整个页面的效果如下: 2) 新增数据效果如下: 3) 新增成功如下: 4) 编辑数据效果如下: 5) 编辑成功效果如下: 6) 删除数据效果如下: 7) 删 ...

  7. iOS sqlite 增删改查 简单封装(基于 FMDB)

    /** *  对 sqlite 的使用进行简单封装,仅涉及简单的单表 增删改查 * *  基于 FMDB * *  操作基于 model ,数据库表字段与 model 属性一一对应,对 model 整 ...

  8. 关于vue的增删改查操作

    利用vue也可以实现数据的增删改查,只是未涉及到数据库,只是在浏览器页面中进行操作. 将datas数组中的数据循环输出: 再增加一行,用于保存新数据,编辑数据后保存: 此时,数据已经呈现出来,开始进行 ...

  9. iOS 数据库的增删改查(OC版)

    自己写了几个方法来实现数据的增删改查功能: 首先在TARGETS--->>Build phases里面添加数据库所关联的库文件libsqlite3.tbd 添加完以后,在控制器上添加 #i ...

  10. IndexedDB 增删改查 简单的库

    <!DOCTYPE html> <html> <head> <title></title> <script src="Ind ...

随机推荐

  1. Rust 闭包与生命周期

  2. redis06-事务

    1 基本说明 可以一次执行多个命令,本质是一组命令的集合.一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其他命令插入,不许加塞. 2 事务相关的几个命令 2.1 MULTI 标记一个事务块 ...

  3. 通过URL地址将图片保存到本地

    今天一朋友问我如何通过URL地址将图片保存下来. 特地找了些资源,实现了一下代码: using System; using System.Drawing; using System.Drawing.I ...

  4. PID控制_位置式

    位置式: 1. 位置式: pid.c: float PID_calculate( float dT_s, //周期(单位:秒) float in_ff, //前馈值 float expect, //期 ...

  5. linux 基础(10)进程管理

    使用 ps 观察程序 ps -l ps程序可以查询当前在运行的进程信息.ps -l可以列出详细的信息,默认仅列出当前 bash 相关的进程. sudo -i ps -l F S UID PID PPI ...

  6. 【vite】踩坑,首次点击路由跳转页面,发生回退,页面闪回,二次点击才能进入目标页面

    [vite]踩坑,首次点击路由跳转页面,发生回退,页面闪回,二次点击才能进入目标页面 最近在做移动端前端项目,使用的vite3+vue3+vant,组件和api挂载,使用的自动导入,unplugin- ...

  7. Spring Boot自动配置原理懂后轻松写一个自己的starter

    目前很多Spring项目的开发都会直接用到Spring Boot.因为Spring原生开发需要加太多的配置,而使用Spring Boot开发很容易上手,只需遵循Spring Boot开发的约定就行了, ...

  8. angr初探

    前言 在搞fuzz的时候发现了一个比较难以解决的问题.例如if(*buf == "\xde\xad\xbe\xef"),我们如果想通过纯fuzz去进入这个if的分支,那么概率极其微 ...

  9. 【KAWAKO】将conda虚拟环境设置进jupyter-notebook

    目录 进入虚拟环境 安装ipykernel 将虚拟环境加入notebook的kernel 打开jupyter-notebook并使用 进入虚拟环境 conda activate audio 安装ipy ...

  10. 滑动窗口模板 leetcode 209题

        """ 给定一个含有 n 个正整数的数组和一个正整数 target . 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, nums ...