zoukankan      html  css  js  c++  java
  • vue全选和取消全选的实现方式(主要是理解computed中的set和get)

    效果:

      

    一、通过watch监听和methods进行数据交互

      DOM结构:

    <template>
      <div id="app">
        <ul>
          <li><input type="checkbox" v-model="allCheck" @click="handleAllCheck" />全选</li><br />
          <li v-for="item in list" :key="item.id">
            <input type="checkbox" v-model="item.status" />{{item.xueli}}
          </li><br />
        </ul>
      </div>
    </template>

      data:

      data() {
        return {
          list: [
            { id: 1, xueli: '小学', status: true },
            { id: 2, xueli: '初中', status: false },
            { id: 3, xueli: '高中', status: true },
            { id: 4, xueli: '大学', status: true }
          ],
          allCheck: null
        }
      }

      watch+methods:

      watch: {
        list: {
          handler(newList) {
            this.allCheck = newList.every((item) => item.status === true)
          },
          deep: true,
          immediate: true
        }
      },
      methods: {
        handleAllCheck() {
          this.list.forEach((item) => {
            item.status = !this.allCheck
          })
        }
      }

    二、通过computed进行数据交互

      DOM(全选按钮不需要点击事件):

    <template>
      <div id="app">
        <ul>
          <li><input type="checkbox" v-model="allCheck" />全选</li><br />
          <li v-for="item in list" :key="item.id">
            <input type="checkbox" v-model="item.status" />{{item.xueli}}
          </li><br />
        </ul>
      </div>
    </template>

      data中不需要定义allCheck变量,使用的是computed中定义的allCheck:

      computed: {
        allCheck: {
          get () {
            const arr = this.list.filter((item) => !item.status)
            if (arr.length === 0) return true
          },
          set (value) {
            this.list.forEach(function (item) {
              item.status = value
            })
          }
        }
      }

      

  • 相关阅读:
    使用Go语言两三事
    Ubuntu安装和配置redis
    samba 问题Windows能看到文件夹但是不能打开
    centos---无线上网的电脑所安装的虚拟机网络设置
    centos克隆,网卡启动失败
    redis安装及基础操作(1)
    hadoop2.6---windows下开发环境搭建
    hadoop2.6---常用命令
    虚拟机centos6.5 --hadoop2.6集群环境搭建
    虚拟机centos6.5 --开放端口
  • 原文地址:https://www.cnblogs.com/wuqilang/p/14886406.html
Copyright © 2011-2022 走看看