zoukankan      html  css  js  c++  java
  • vue的增删改查(简单版)

    <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 {
       400px;
    }
    /*
     Map() 循环遍历 有返回值
    forEach() 无返回值
    ...扩展运算符es6 对当前数组进行序列化 就是拿到数组的结果  
    var _id=Math.max(...this.infos.map(function(item){
      return item.id  循环拿到对应的id值
      }))+1;
     




     */
    </style>
  • 相关阅读:
    4.变量以及类型
    3.注释
    2.第一个python程序
    1.认识Python
    DB安装
    DB2<RedHed Linux> 创建数据库
    win 7设置主机域名
    FTP 错误1
    FTP 其他设置
    VM浏览器不能访问
  • 原文地址:https://www.cnblogs.com/maliyaya/p/13137631.html
Copyright © 2011-2022 走看看