<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. ChatGPT:好家伙,每个人内心的一块魔镜

    这几天最火的话题就是ChatGPT,人人都在聊,人人都在社交圈或者vlog里面分享使用ChatGPT的聊天截图. 众生有众生相,每个人对这个AI工具有不同的感受和反应.我个人是非常接受ChatGPT, ...

  2. vivo官网App模块化开发方案-ModularDevTool

    作者:vivo 互联网客户端团队- Wang Zhenyu 本文主要讲述了Android客户端模块化开发的痛点及解决方案,详细讲解了方案的实现思路和具体实现方法. 说明:本工具基于vivo互联网客户端 ...

  3. 华为云发布分布式编译构建系统CodeArts Build

    摘要:2月14日,华为云发布分布式编译构建系统CodeArts Build,旨在支撑企业实现高效的软件开发,缩短产品上市周期,帮助企业的软件产品快速形成关键竞争力. 本文分享自华为云社区<唯快不 ...

  4. 学习Java Day30

    今天回顾了一下整章对象与类,对自己进行了查漏补缺,依旧存在许多知识点的掌握不充分,类的使用的不熟练,同志仍需努力,革命尚未成功.

  5. JZOJ 5354. 【NOIP2017提高A组模拟9.9】导弹拦截

    题目 如题 分析 第一问很简单, \(dp\) 即可(得先排序) 第二问很经典,最小路径覆盖问题,最大流解决 \(n-Maxflow\) \(Code\) #include<cstdio> ...

  6. Python连接hadoop-hive连接方法

    import impala.dbapi as ipdbconn = ipdb.connect(host='IP', port= 端口, database='数据库名', auth_mechanism= ...

  7. liunx安装docker (自我记录)

    1 安装 安装所需的软件包dnf install -y yum-utils device-mapper-persistent-data lvm2 //官方源地址(比较慢) ~]# dnf config ...

  8. nvm安装和管理nodejs

    一.NVM简介 NVM 全称 Node Version Manager,是一个管理 NodeJS 版本的工具. NVM 默认只支持 Linux 和 OS X,不支持 Windows windows使用 ...

  9. C++语言程序设计实验一 类与对象

    Complex.hpp文件源码: #include <iostream> using namespace std; class Complex { public: Complex(floa ...

  10. Python控制台输出字体颜色及背景设置

    python 可以利用命令输出带有特效的控制台字体 基础语法 Python利用'\033[<style CODE>;<fore color CODE>;< back co ...