vue CRUD + 搜索

一,建立页面--如图

先实现按照name查询信息

        给搜索框绑定“keyword”

<div id="root">

    <input type="text" :class="selected" v-model="keyword" placeholder="请输入名字">

    <ul>

      <li v-for="(i,index) in listdata" :key="i.id">

        {{i.id}}-{{i.name}}-{{i.age}}

      </li>

    </ul>

  </div>

  <script>

    new Vue({

      el:"#root",

      data(){

        return {

          //原始表单数据

          listdata: [

            { id: "0", name: "小明", age: "18" },

            { id: "1", name: "小王", age: "19" },

            { id: "2", name: "王明", age: "20" },

            { id: "3", name: "王红", age: "18" },

            { id: "4", name: "小红", age: "19" },

            { id: "5", name: "红明", age: "21" },

          ],

          //搜索关键字

          keyword:"",

        }

      }

    })

  </script>

过滤“listdata”中包含“keyword”的所以对象--计算属性“computed”和侦听“watch”都可实现,这里使用计算属性实现 “filterdata”为过滤后的数据 这时 li 列表遍历的对象应该改为“filterdata”

computed: {

        filterdata() {

          //返回过滤的值

          return this.listdata.filter((i) => {

            return i.name.indexOf(this.keyword) !== -1

          })

        }

      },

这是侦听实现过滤的代码

watch:{

    // keyword: {

        //  //立即调用 过滤空数组(全部数据)

        //  immediate: true,

        //  //监听改变

        //  handler(newval, oldval) {

        //    //用新的数组接收过滤后数组

        //    this.filterdata = this.listdata.filter((i) => {

        //      //监听改变返回包含newval的对象--直接赋值过滤后不可还原

        //      return i.name.indexOf(newval) !== -1

        //    })

        //  }

        // }

}

这是实现查询的完整代码

  <style>

    li {

      list-style: none;

      display: block;

      padding: 20px;

      font-size: 20px;

      width: 150px;

      cursor: pointer;

    }

    input {

      margin: 20px;

      padding: 5px;

    }

  </style>

  <div id="root">

    <input type="text" :class="selected" v-model="keyword" placeholder="请输入名字">

    <ul>

      <li v-for="(i,index) in filterdata" :key="i.id">

        {{i.id}}-{{i.name}}-{{i.age}}

      </li>

    </ul>

  </div>

  <script>

    new Vue({

      el:"#root",

      data(){

        return {

          //原始表单数据

          listdata: [

            { id: "0", name: "小明", age: "18" },

            { id: "1", name: "小王", age: "19" },

            { id: "2", name: "王明", age: "20" },

            { id: "3", name: "王红", age: "18" },

            { id: "4", name: "小红", age: "19" },

            { id: "5", name: "红明", age: "21" },

          ],

          //搜索关键字

          keyword:"",

        }

      },

      computed: {

        filterdata() {

          //返回过滤的值

          return this.listdata.filter((i) => {

            //箭头函数返回包含keyword的值(不用箭头函数要在外部定义—_this = this)

            return i.name.indexOf(this.keyword) !== -1

          })

        },

        //监听实现过滤

        // keyword: {

        //  //立即调用 过滤空数组(全部数据)

        //  immediate: true,

        //  //监听改变

        //  handler(newval, oldval) {

        //    //用新的数组接收过滤后数组

        //    this.filterdata = this.listdata.filter((i) => {

        //      //监听改变返回包含newval的对象--直接赋值过滤后不可还原

        //      return i.name.indexOf(newval) !== -1

        //    })

        //  }

        // }

      },

    })

  </script>

功能实现如图


二,实现添加功能

        写一个添加列表页和一个添加按钮 用v-show来控制添加页是否渲染 效果如图

给每个按钮绑定对应的事件 openadd(打开添加页)方法 改变添加页绑定的addsee值为1 使添加页显示 closeadd(关闭添加页)方法相反

完整代码如下

<style>

    li {

      list-style: none;

      display: block;

      padding: 20px;

      font-size: 20px;

      width: 150px;

      cursor: pointer;

    }

    input {

      margin: 20px;

      padding: 5px;

    }

    .adddata {

      position: absolute;

      width: 200px;

      background-color: #fff;

      padding: 10px;

      top: 300px;

      left: 500px;

      text-align: center;

      transition: all .3s;

      box-shadow: 0 0 10px rgba(0, 0, 0, .1);

    }

  </style>

  <div id="root">

    <input type="text" v-model="keyword" placeholder="请输入名字">

    <button @click="openadd">添加信息</button>

    <div class="adddata" v-show="addsee == 1">

      添加信息

      <input type="text" name="id" v-model="addlistdata.id" placeholder="请输入ID">

      <input type="text" name="name" v-model="addlistdata.name" placeholder="请输入名称">

      <input type="text" name="age" v-model="addlistdata.age" placeholder="请输入年龄">

      <button @click="add" id="addbtn">确 认</button>

      <button @click="closeadd">关 闭</button>

    </div>

    <ul>

      <li v-for="(i,index) in filterdata" :key="i.id">

        {{i.id}}-{{i.name}}-{{i.age}}

      </li>

    </ul>

  </div>

  <script>

    new Vue({

      el: "#root",

      data() {

        return {

          //原始表单数据

          listdata: [

            { id: "0", name: "小明", age: "18" },

            { id: "1", name: "小王", age: "19" },

            { id: "2", name: "王明", age: "20" },

            { id: "3", name: "王红", age: "18" },

            { id: "4", name: "小红", age: "19" },

            { id: "5", name: "红明", age: "21" },

          ],

          //搜索关键字

          keyword: "",

          //输入的数据

          addlistdata: { id: "", name: "", age: "" },

          addsee: ""

        }

      },

      computed: {

        filterdata() {

          //返回过滤的值

          return this.listdata.filter((i) => {

            //箭头函数返回包含keyword的值(不用箭头函数要在外部定义—_this = this)

            return i.name.indexOf(this.keyword) !== -1

          })

        },

        //监听实现过滤

        // keyword: {

        //  //立即调用 过滤空数组(全部数据)

        //  immediate: true,

        //  //监听改变

        //  handler(newval, oldval) {

        //    //用新的数组接收过滤后数组

        //    this.filterdata = this.listdata.filter((i) => {

        //      //监听改变返回包含newval的对象--直接赋值过滤后不可还原

        //      return i.name.indexOf(newval) !== -1

        //    })

        //  }

        // }

      },

      methods: {

        openadd() {

          this.addsee="1"

        },

        closeadd(){

          this.addsee=""

        },

        add(){

        },


      }

    })

  </script>

接下来实现添加数据add方法  这里注意 为避免输入的id重复 这里获取了所以id并找出最大的id限制输入的id必须大于最大id  并且添加完成后要初始化addlistdata数据使其为空

add() {

          var arr = []

          //获取所有id

          for (let i = 0; i < this.listdata.length; i++) {

            arr.push(this.listdata[i].id)

          }

          //获取最大ID值

          var max = Math.max.apply(null, arr);

          //判断输入id小于最大id

          if (this.addlistdata.id <= max) {

            alert("请输入合法的id,必须大于" + max)

            //判断name为空

          } else if (this.addlistdata.name == "") {

            alert("请输入名字")

            //判断年龄范围

          } else if (this.addlistdata.age < 15 || this.addlistdata.age > 25) {

            alert("请输入合适的年龄(15~25)")

          } else {

            //添加addlistdata到listdata

            this.listdata.push(this.addlistdata)

            //初始化addlistdata对象 使其为空

            this.addlistdata = { id: "", name: "", age: "" }

            //调用closeadd方法关闭页面

            this.closeadd()

            alert("添加成功")

          }

        },

效果如图

添加成功 OK添加功能也完成了

此时完整代码如下

<style>

    li {

      list-style: none;

      display: block;

      padding: 20px;

      font-size: 20px;

      width: 150px;

      cursor: pointer;

    }

    input {

      margin: 20px;

      padding: 5px;

    }

    .adddata {

      position: absolute;

      width: 200px;

      background-color: #fff;

      padding: 10px;

      top: 300px;

      left: 500px;

      text-align: center;

      transition: all .3s;

      box-shadow: 0 0 10px rgba(0, 0, 0, .1);

    }

  </style>

  <div id="root">

    <input type="text" v-model="keyword" placeholder="请输入名字">

    <button @click="openadd">添加信息</button>

    <div class="adddata" v-show="addsee == 1">

      添加信息

      <input type="text" name="id" v-model="addlistdata.id" placeholder="请输入ID">

      <input type="text" name="name" v-model="addlistdata.name" placeholder="请输入名称">

      <input type="text" name="age" v-model="addlistdata.age" placeholder="请输入年龄">

      <button @click="add" id="addbtn">确 认</button>

      <button @click="closeadd">关 闭</button>

    </div>

    <ul>

      <li v-for="(i,index) in filterdata" :key="i.id">

        {{i.id}}-{{i.name}}-{{i.age}}

      </li>

    </ul>

  </div>

  <script>

    new Vue({

      el: "#root",

      data() {

        return {

          //原始表单数据

          listdata: [

            { id: "0", name: "小明", age: "18" },

            { id: "1", name: "小王", age: "19" },

            { id: "2", name: "王明", age: "20" },

            { id: "3", name: "王红", age: "18" },

            { id: "4", name: "小红", age: "19" },

            { id: "5", name: "红明", age: "21" },

          ],

          //搜索关键字

          keyword: "",

          //输入的数据

          addlistdata: { id: "", name: "", age: "" },

          addsee: ""

        }

      },

      computed: {

        filterdata() {

          //返回过滤的值

          return this.listdata.filter((i) => {

            //箭头函数返回包含keyword的值(不用箭头函数要在外部定义—_this = this)

            return i.name.indexOf(this.keyword) !== -1

          })

        },

        //监听实现过滤

        // keyword: {

        //  //立即调用 过滤空数组(全部数据)

        //  immediate: true,

        //  //监听改变

        //  handler(newval, oldval) {

        //    //用新的数组接收过滤后数组

        //    this.filterdata = this.listdata.filter((i) => {

        //      //监听改变返回包含newval的对象--直接赋值过滤后不可还原

        //      return i.name.indexOf(newval) !== -1

        //    })

        //  }

        // }

      },

      methods: {

        openadd() {

          this.addsee="1"

        },

        closeadd(){

          this.addsee=""

        },

        add() {

          var arr = []

          //获取所有id

          for (let i = 0; i < this.listdata.length; i++) {

            arr.push(this.listdata[i].id)

          }

          //获取最大ID值

          var max = Math.max.apply(null, arr);

          //判断输入id小于最大id

          if (this.addlistdata.id <= max) {

            alert("请输入合法的id,必须大于" + max)

            //判断name为空

          } else if (this.addlistdata.name == "") {

            alert("请输入名字")

            //判断年龄范围

          } else if (this.addlistdata.age < 15 || this.addlistdata.age > 25) {

            alert("请输入合适的年龄(15~25)")

          } else {

            //添加addlistdata到listdata

            this.listdata.push(this.addlistdata)

            //初始化addlistdata对象 使其为空

            this.addlistdata = { id: "", name: "", age: "" }

            //调用closeadd方法关闭页面

            this.closeadd()

            alert("添加成功")

          }

        },

      }

    })

  </script>

三,实现删除功能

        这一步跟添加一样 先写一个删除页一个删除按钮同样用v-show控制删除页的显示 最后给按钮绑定功能  -----效果如图

代码如下

<div class="deldata" v-show="delsee == 1">

      删除信息

      <input type="text" name="id" v-model="addlistdata.id" placeholder="请输入ID">

      <input type="text" name="name" v-model="addlistdata.name" placeholder="请输入名称">

      <input type="text" name="age" v-model="addlistdata.age" placeholder="请输入年龄">

      <button @click="del">确 认</button>

      <button @click="closedel">关 闭</button>

    </div>

注意再打开删除页时添加页应该关闭 因此在opendel(打开删除页)方法里调用closedel(关闭删除页)方法  同样openadd方法里也要调用closedel方法 保证同时只有一个操作业面打开

openadd() {

          this.addsee="1"

          this.closedel()

        },

        closeadd(){

          this.addsee=""

        },

        opendel(){

          this.delsee="1"

          this.closeadd()

        },

        closedel(){

          this.delsee=""

        },

接下来实现del(删除信息)方法---代码如下  注意注意 这里的逻辑是使用forEach方法找出输入的id对应信息的索引值,根据这个索引值进行删除 。用arr 接收这个信息的id和index再通过逻辑判断进行删除,删除后也要初始化addlistdata的

    del() {

          //定义需要删除的id对象 初始为空

          let arr = { id: "", index: "" }

          this.listdata.forEach((item, index) => {

            if (this.addlistdata.id == item.id) {

              //给id对象赋值

              arr = { id: item.id, index: index }

            }

          })

          //判断id为空

          if (this.addlistdata.id == "") {

            alert("请输入将要删除的ID")

            //判断id存在即删除

          } else if (this.addlistdata.id == arr.id) {

            //删除此ID对应的索引的信息

            this.listdata.splice(arr.index, 1)

            //初始化addlistdata对象 使其为空

            this.addlistdata = { id: "", name: "", age: "" }

            this.closedel()

            alert("删除成功")

            //判断id不存在

          } else {

            alert("此ID不存在")

          }

        },

删除效果如图


至此删除功能就完成了  完整代码如下

  <style>

    li {

      list-style: none;

      display: block;

      padding: 20px;

      font-size: 20px;

      width: 150px;

      cursor: pointer;

    }

    input {

      margin: 20px;

      padding: 5px;

    }

    button {

      padding: 5px;

      margin: 10px;

    }

    .deldata,

    .adddata {

      position: absolute;

      width: 200px;

      background-color: #fff;

      padding: 10px;

      top: 300px;

      left: 500px;

      text-align: center;

      transition: all .3s;

      box-shadow: 0 0 10px rgba(0, 0, 0, .1);

    }

  </style>

  <div id="root">

    <input type="text" v-model="keyword" placeholder="请输入名字">

    <button @click="openadd">添加信息</button><button @click="opendel">删除信息</button>

    <div class="adddata" v-show="addsee == 1">

      添加信息

      <input type="text" name="id" v-model="addlistdata.id" placeholder="请输入ID">

      <input type="text" name="name" v-model="addlistdata.name" placeholder="请输入名称">

      <input type="text" name="age" v-model="addlistdata.age" placeholder="请输入年龄">

      <button @click="add" id="addbtn">确 认</button>

      <button @click="closeadd">关 闭</button>

    </div>

    <div class="deldata" v-show="delsee == 1">

      删除信息

      <input type="text" name="id" v-model="addlistdata.id" placeholder="请输入ID">

      <input type="text" name="name" v-model="addlistdata.name" placeholder="请输入名称">

      <input type="text" name="age" v-model="addlistdata.age" placeholder="请输入年龄">

      <button @click="del">确 认</button>

      <button @click="closedel">关 闭</button>

    </div>

    <ul>

      <li v-for="(i,index) in filterdata" :key="i.id">

        {{i.id}}-{{i.name}}-{{i.age}}

      </li>

    </ul>

  </div>

  <script>

    new Vue({

      el: "#root",

      data() {

        return {

          //原始表单数据

          listdata: [

            { id: "0", name: "小明", age: "18" },

            { id: "1", name: "小王", age: "19" },

            { id: "2", name: "王明", age: "20" },

            { id: "3", name: "王红", age: "18" },

            { id: "4", name: "小红", age: "19" },

            { id: "5", name: "红明", age: "21" },

          ],

          //搜索关键字

          keyword: "",

          //输入的数据

          addlistdata: { id: "", name: "", age: "" },

          addsee: "",

          delsee: ""

        }

      },

      computed: {

        filterdata() {

          //返回过滤的值

          return this.listdata.filter((i) => {

            //箭头函数返回包含keyword的值(不用箭头函数要在外部定义—_this = this)

            return i.name.indexOf(this.keyword) !== -1

          })

        },

        //监听实现过滤

        // keyword: {

        //  //立即调用 过滤空数组(全部数据)

        //  immediate: true,

        //  //监听改变

        //  handler(newval, oldval) {

        //    //用新的数组接收过滤后数组

        //    this.filterdata = this.listdata.filter((i) => {

        //      //监听改变返回包含newval的对象--直接赋值过滤后不可还原

        //      return i.name.indexOf(newval) !== -1

        //    })

        //  }

        // }

      },

      methods: {

        openadd() {

          this.addsee="1"

          this.closedel()

        },

        closeadd(){

          this.addsee=""

        },

        opendel(){

          this.delsee="1"

          this.closeadd()

        },

        closedel(){

          this.delsee=""

        },

        add() {

          var arr = []

          //获取所有id

          for (let i = 0; i < this.listdata.length; i++) {

            arr.push(this.listdata[i].id)

          }

          //获取最大ID值

          var max = Math.max.apply(null, arr);

          //判断输入id小于最大id

          if (this.addlistdata.id <= max) {

            alert("请输入合法的id,必须大于" + max)

            //判断name为空

          } else if (this.addlistdata.name == "") {

            alert("请输入名字")

            //判断年龄范围

          } else if (this.addlistdata.age < 15 || this.addlistdata.age > 25) {

            alert("请输入合适的年龄(15~25)")

          } else {

            //添加addlistdata到listdata

            this.listdata.push(this.addlistdata)

            //初始化addlistdata对象 使其为空

            this.addlistdata = { id: "", name: "", age: "" }

            //调用closeadd方法关闭页面

            this.closeadd()

            alert("添加成功")

          }

        },

        del() {

          //定义需要删除的id对象 初始为空

          let arr = { id: "", index: "" }

          this.listdata.forEach((item, index) => {

            if (this.addlistdata.id == item.id) {

              //给id对象赋值

              arr = { id: item.id, index: index }

            }

          })

          //判断id为空

          if (this.addlistdata.id == "") {

            alert("请输入将要删除的ID")

            //判断id存在即删除

          } else if (this.addlistdata.id == arr.id) {

            //删除此ID对应的索引的信息

            this.listdata.splice(arr.index, 1)

            //初始化addlistdata对象 使其为空

            this.addlistdata = { id: "", name: "", age: "" }

            this.closedel()

            alert("删除成功")

            //判断id不存在

          } else {

            alert("此ID不存在")

          }

        },

      }

    })

  </script>

四,修改功能

        这一步跟添加一样 先写一个修改页用v-show控制修改页的显示,给id输入框写上disable属性-不可修改,给li绑定一个openup (打开修改页)方法,最后给按钮绑定up(修改)方法和closeup(关闭修改页)方法

注意 openup(i)方法有一个形参即listdata中的某个对象,这也是点击的那个对象在openup方法中将信息对象赋值给input框 方便修改  另外页面始终只有一个操作页是打开状态 因此在打开某个操作页时应该调用其他操作页关闭的方法  最后在修改页关闭时要初始化addlistdata值

代码如下

<div class="updata" v-show="upsee == 1">

      修改信息

      <input type="text" name="id" v-model="addlistdata.id" placeholder="请输入ID" disabled>

      <input type="text" name="name" v-model="addlistdata.name" placeholder="请输入名称">

      <input type="text" name="age" v-model="addlistdata.age" placeholder="请输入年龄">

      <button @click="up">确 认</button>

      <button @click="closeup">关 闭</button>

    </div>

    openadd() {

          this.addsee="1"

          this.closedel()

          this.closeup()

        },

        closeadd(){

          this.addsee=""

        },

        opendel(){

          this.delsee="1"

          this.closeadd()

          this.closeup()

        },

        closedel(){

          this.delsee=""

        },

        openup(i){

          this.closeadd()

          this.closedel()

          this.upsee = "1"

          this.addlistdata = { id: i.id, name: i.name, age: i.age }

        },

        closeup(){

          this.upsee = ""

          this.addlistdata = { id: "", name: "", age: "" }

        },

  -----效果如图

最后就是修改方法的实现了---代码如下

注意 这里也是用forEach获取当前信息的索引值 再根据索引修改信息 修改成功后要调用closeup方法关闭修改页并初始化addlistdata值

    up() {

          //获取要修改的信息索引

          this.listdata.forEach((item, index) => {

            if (this.addlistdata.id == item.id) {

              //判断名字合法

              if (this.addlistdata.name == "") {

                alert("请输入名字")

                //判断年龄

              } else if (this.addlistdata.age < 15 || this.addlistdata.age > 25) {

                alert("请输入合适的年龄(15~25)")

              } else {

                //修改信息

                this.listdata[index].name = this.addlistdata.name

                this.listdata[index].age = this.addlistdata.age

                this.closeup()

                alert("修改成功")

              }

            }

          })

        }

修改效果如图


至此增删改查效果就完成啦 !!!

下面是完整代码

  <style>

    li {

      list-style: none;

      display: block;

      padding: 20px;

      font-size: 20px;

      width: 150px;

      cursor: pointer;

    }

    li:hover {

      background-color: #f4f4f4;

    }

    input {

      margin: 20px;

      padding: 5px;

    }

    button {

      padding: 5px;

      margin: 10px;

    }

    .updata,

    .deldata,

    .adddata {

      position: absolute;

      width: 200px;

      background-color: #fff;

      padding: 10px;

      top: 300px;

      left: 500px;

      text-align: center;

      transition: all .3s;

      box-shadow: 0 0 10px rgba(0, 0, 0, .1);

    }

  </style>

  <div id="root">

    <input type="text" v-model="keyword" placeholder="请输入名字">

    <button @click="openadd">添加信息</button><button @click="opendel">删除信息</button>

    <div class="adddata" v-show="addsee == 1">

      添加信息

      <input type="text" name="id" v-model="addlistdata.id" placeholder="请输入ID">

      <input type="text" name="name" v-model="addlistdata.name" placeholder="请输入名称">

      <input type="text" name="age" v-model="addlistdata.age" placeholder="请输入年龄">

      <button @click="add" id="addbtn">确 认</button>

      <button @click="closeadd">关 闭</button>

    </div>

    <div class="deldata" v-show="delsee == 1">

      删除信息

      <input type="text" name="id" v-model="addlistdata.id" placeholder="请输入ID">

      <input type="text" name="name" v-model="addlistdata.name" placeholder="请输入名称">

      <input type="text" name="age" v-model="addlistdata.age" placeholder="请输入年龄">

      <button @click="del">确 认</button>

      <button @click="closedel">关 闭</button>

    </div>

    <div class="updata" v-show="upsee == 1">

      修改信息

      <input type="text" name="id" v-model="addlistdata.id" placeholder="请输入ID" disabled>

      <input type="text" name="name" v-model="addlistdata.name" placeholder="请输入名称">

      <input type="text" name="age" v-model="addlistdata.age" placeholder="请输入年龄">

      <button @click="up">确 认</button>

      <button @click="closeup">关 闭</button>

    </div>

    <ul>

      <li v-for="(i,index) in filterdata" :key="i.id" @click="openup(i)">

        {{i.id}}-{{i.name}}-{{i.age}}

      </li>

    </ul>

  </div>

  <script>

    new Vue({

      el: "#root",

      data() {

        return {

          //原始表单数据

          listdata: [

            { id: "0", name: "小明", age: "18" },

            { id: "1", name: "小王", age: "19" },

            { id: "2", name: "王明", age: "20" },

            { id: "3", name: "王红", age: "18" },

            { id: "4", name: "小红", age: "19" },

            { id: "5", name: "红明", age: "21" },

          ],

          //搜索关键字

          keyword: "",

          //输入的数据

          addlistdata: { id: "", name: "", age: "" },

          addsee: "",

          delsee: "",

          upsee:""

        }

      },

      computed: {

        filterdata() {

          //返回过滤的值

          return this.listdata.filter((i) => {

            //箭头函数返回包含keyword的值(不用箭头函数要在外部定义—_this = this)

            return i.name.indexOf(this.keyword) !== -1

          })

        },

        //监听实现过滤

        // keyword: {

        //  //立即调用 过滤空数组(全部数据)

        //  immediate: true,

        //  //监听改变

        //  handler(newval, oldval) {

        //    //用新的数组接收过滤后数组

        //    this.filterdata = this.listdata.filter((i) => {

        //      //监听改变返回包含newval的对象--直接赋值过滤后不可还原

        //      return i.name.indexOf(newval) !== -1

        //    })

        //  }

        // }

      },

      methods: {

        openadd() {

          this.addsee="1"

          this.closedel()

          this.closeup()

        },

        closeadd(){

          this.addsee=""

        },

        opendel(){

          this.delsee="1"

          this.closeadd()

          this.closeup()

        },

        closedel(){

          this.delsee=""

        },

        openup(i){

          this.closeadd()

          this.closedel()

          this.upsee = "1"

          this.addlistdata = { id: i.id, name: i.name, age: i.age }

        },

        closeup(){

          this.upsee = ""

          this.addlistdata = { id: "", name: "", age: "" }

        },

        add() {

          var arr = []

          //获取所有id

          for (let i = 0; i < this.listdata.length; i++) {

            arr.push(this.listdata[i].id)

          }

          //获取最大ID值

          var max = Math.max.apply(null, arr);

          //判断输入id小于最大id

          if (this.addlistdata.id <= max) {

            alert("请输入合法的id,必须大于" + max)

            //判断name为空

          } else if (this.addlistdata.name == "") {

            alert("请输入名字")

            //判断年龄范围

          } else if (this.addlistdata.age < 15 || this.addlistdata.age > 25) {

            alert("请输入合适的年龄(15~25)")

          } else {

            //添加addlistdata到listdata

            this.listdata.push(this.addlistdata)

            //初始化addlistdata对象 使其为空

            this.addlistdata = { id: "", name: "", age: "" }

            //调用closeadd方法关闭页面

            this.closeadd()

            alert("添加成功")

          }

        },

        del() {

          //定义需要删除的id对象 初始为空

          let arr = { id: "", index: "" }

          this.listdata.forEach((item, index) => {

            if (this.addlistdata.id == item.id) {

              //给id对象赋值

              arr = { id: item.id, index: index }

            }

          })

          //判断id为空

          if (this.addlistdata.id == "") {

            alert("请输入将要删除的ID")

            //判断id存在即删除

          } else if (this.addlistdata.id == arr.id) {

            //删除此ID对应的索引的信息

            this.listdata.splice(arr.index, 1)

            //初始化addlistdata对象 使其为空

            this.addlistdata = { id: "", name: "", age: "" }

            this.closedel()

            alert("删除成功")

            //判断id不存在

          } else {

            alert("此ID不存在")

          }

        },

        up() {

          //获取要修改的信息索引

          this.listdata.forEach((item, index) => {

            if (this.addlistdata.id == item.id) {

              //判断名字合法

              if (this.addlistdata.name == "") {

                alert("请输入名字")

                //判断年龄

              } else if (this.addlistdata.age < 15 || this.addlistdata.age > 25) {

                alert("请输入合适的年龄(15~25)")

              } else {

                //修改信息

                this.listdata[index].name = this.addlistdata.name

                this.listdata[index].age = this.addlistdata.age

                this.closeup()

                alert("修改成功")

              }

            }

          })

        }

      }

    })

  </script>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基础部分 模版语法 1.computed和watch的区别 计算属性computed :支持缓存,data数据不变...
    王蕾_fd49阅读 632评论 0 0
  • <template> <el-form :inline="false" :model="form" ref="...
    南漂一枚阅读 354评论 0 0
  • # Vue.js - day01 ## 插件安装推荐 vscode有二个常用插件:vetur,Vue 2 Snip...
    wuyuan0127阅读 636评论 0 0
  • VUE.js 基本命令v-if || v-for : 条件与循环v-model: 为页面输入框进行数据双向绑定v-...
    楼水流云阅读 681评论 0 0
  • ### 什么是Vue.js + Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架(Reac...
    JLong阅读 1,154评论 0 0