在Vue中執行CheckBox的全選反選有不少方法
我以爲最易懂,速度最快的方法就是這個!less
首先就是本身建立一個input,正在mx.txt的前方添加一個input:CheckBox。在v-model加上你每次建立出來的mx.checkthis
最重點就在於forEach遍歷,出來的都是當前的。
有些人不注意的一點,爲何data裏面沒有check:[]這樣的出現。
data裏的是實時監控,你點一次自動將全部的check都變成了true。spa
this.list = this.list.filter(e => { return !e.check })
這句話的意思:當你打鉤的那幾個。
當前的數據賦一個值, 這個值就是過濾全部的list裏面想幹掉的人code
由於默認是false,可是被你選中的則是true。
但他讓你返回!e.check 則是false
也就是說:我要的是沒有中的blog
<template> <div class="check"> <button @click="checkAll">全選</button> <button @click="remAll">所有刪除</button> <button @click="rem">選中刪除</button> <br> <input type="text" v-model="txt" @keyup.enter="ck" /> <ul> <li v-for="(mx, index) in list" :key="index"> <input type="checkbox" v-model="mx.check" /> {{mx.txt}} </li> </ul> </div> </template>
<script> export default { data() { return { txt: "", list: [], } }, methods: { ck() { this.list.push({ txt: this.txt, check: false }) this.txt = "" }, remAll() { this.list = [] }, checkAll() { this.list.forEach((mx) => { mx.check = !mx.check }) }, rem() { this.list = this.list.filter(e => { return !e.check }) } } } </script>
<style lang="less"> .check { cursor: pointer; button { cursor: pointer; border: 0; padding: 10px 30px; background: #000; color: #fff; border-radius: 100px; margin-bottom: 10px; outline: none; } input { padding: 15px; width: 300px; border: 0; box-shadow: 0 0 15px #ccc; } ul { width: 300px; padding: 0; cursor: pointer; box-shadow: 0 0 15px #ccc; min-height: 300px; padding: 15px; list-style: none; li { cursor: pointer; margin-bottom: 12px; >input { padding: 0; width: auto; } } } } </style>