纯Vue实现增删改查小案例

废话少说直接上代码-----------

一,建立页面--如图

 纯Vue实现增删改查小案例_第1张图片

 先实现按照name查询信息

        给搜索框绑定“keyword

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

过滤“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
        //     })
        //   }
        // }
}

这是实现查询的完整代码

  

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

功能实现如图

纯Vue实现增删改查小案例_第2张图片

 二,实现添加功能

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

纯Vue实现增删改查小案例_第3张图片

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

完整代码如下





  
添加信息
  • {{i.id}}-{{i.name}}-{{i.age}}

接下来实现添加数据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("添加成功")
          }
        },

效果如图

纯Vue实现增删改查小案例_第4张图片

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

 纯Vue实现增删改查小案例_第5张图片纯Vue实现增删改查小案例_第6张图片

此时完整代码如下



  
添加信息
  • {{i.id}}-{{i.name}}-{{i.age}}

 三,实现删除功能

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

纯Vue实现增删改查小案例_第7张图片

 代码如下

删除信息

注意再打开删除页时添加页应该关闭 因此在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 接收这个信息的idindex再通过逻辑判断进行删除,删除后也要初始化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不存在")
          }
        },

删除效果如图

纯Vue实现增删改查小案例_第8张图片纯Vue实现增删改查小案例_第9张图片

 纯Vue实现增删改查小案例_第10张图片纯Vue实现增删改查小案例_第11张图片

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

  

  
添加信息
删除信息
  • {{i.id}}-{{i.name}}-{{i.age}}

四,修改功能

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

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

代码如下

修改信息
    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: "" }
        },

  -----效果如图

 纯Vue实现增删改查小案例_第12张图片

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

注意 这里也是用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("修改成功")
              }
            }
          })
        }

 修改效果如图

纯Vue实现增删改查小案例_第13张图片纯Vue实现增删改查小案例_第14张图片

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

下面是完整代码

  

  
添加信息
删除信息
修改信息
  • {{i.id}}-{{i.name}}-{{i.age}}

你可能感兴趣的:(vue.js,javascript)