(填坑)vue实现简单的增删改查和全选反选功能

没有技术含量的暴力版:

<template>
  <div class="container manage">
    <div>
      <ul class="clearFloat manage__title">
        <li>
          <label>id(添加或修改):</label>
          <input type="text" placeholder="请输入id" v-model="id" />
        </li>
        <li>
          <label>name(添加或修改):</label>
          <input type="text" placeholder="请输入name" v-model="name" />
        </li>
        <li>
          <button value="添加" @click="add()">添加</button>
        </li>
      </ul>
    </div>
    <div class="manage__content">
      <label>搜索:</label>
      <input type="text" placeholder="请输入name" v-model="keyword" />
      <input type="checkbox" name="items" class="all-choose" v-model="flag" @click="allchoose()" />
      <label>全选</label>
      <input type="button" name="items" value="反选" class="diff-choose" @click="rechoose()" />
      <ul v-for="item in search(keyword)" :key="item.id" class="clearFloat">
        <li>
          <input type="checkbox" name="items" v-model="item.isChecked" @click="choose(item.id)" />
          <span>{{item.id}} : {{item.name}}</span>
          <button value="删除" @click="del(item.id)">删除</button>
          <button value="编辑" @click="modify(item.id)">编辑</button>
        </li>
      </ul>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      id: '',
      name: '',
      keyword: '',
      flag: false,
      reflag: false,
      items: [
        { id: '01', name: 'ming', isChecked: false },
        { id: '02', name: 'ming1', isChecked: false },
        { id: '03', name: 'ming2', isChecked: false },
        { id: '04', name: 'ming3', isChecked: false },
        { id: '05', name: 'ming4', isChecked: false }
      ]
    }
  },
  methods: {
    add() {
      if (this.items.findIndex(item => item.id === this.id) !== -1) {
        alert('do not add same id')
      } else {
        this.items.push({ id: this.id, name: this.name })
      }
    },
    search(keyword) {
      var arr = this.items.filter(item => {
        if (item.name.includes(keyword)) {
          return item
        }
      })
      return arr
    },
    del(id) {
      var index = this.items.findIndex(item => item.id === id)
      this.items.splice(index, 1)
    },
    modify(id) {
      var index = this.items.findIndex(item => item.id === id)
      this.items.splice(index, 1, { id: this.id, name: this.name })
    },
    allchoose() {
      var flag = this.flag
      flag = !flag
      console.log('父框ischecked' + '=' + flag)
      this.items.map(item => { item.isChecked = flag })
      this.items.map(item => { console.log(item.isChecked) })
    },
    rechoose() {
      this.items.map(item => { item.isChecked = !item.isChecked })
    },
    choose(id) {
      var index = this.items.findIndex(item => item.id === id)
      console.log('item=' + index)
      this.items[index].isChecked = !this.items[index].isChecked
      var isChecked = this.items[index].isChecked
      console.log('item.ischecked= ' + this.items[index].isChecked)
      if (isChecked === false) {
        this.flag = false
        console.log('flag=' + this.flag)
      } else if (this.items.findIndex(item => item.isChecked === false) === -1) {
        this.flag = true
      }
    }
  }
}
</script>

<style lang="less">
.manage {
  &__title {
    height: 50px;
    display: flex;
    justify-content: center;
    align-items: center;
    li {
      margin: 20px 10px;
    }
  }
  // &__content {
  //   ul {
  //     li {
  //     }
  //   }
  // }
}
button {
  height: 40px;
  width: 80px;
  font-size: 12px;
  color: black;
}
</style>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值