使用复选框,实现全选,单独选中等需求功能

news/2024/7/10 3:10:00 标签: vue, js, javascript, 前端

使用复选框,实现需求

  • 需求
  • 实现
      • html,拿到数据后,先将左侧数据渲染到页面上
      • js部分

在这里插入图片描述

在这里插入图片描述

需求

  • 当我点击单个复选框,将内容添加到右侧
  • 当我复选框全部点击后,将内容添加到右侧,全选按钮自动勾选
  • 当我点击全选按钮,左侧内容全部勾选,右侧内容已添加
  • 当我取消全选按钮,右侧内容都删除,左侧的复选框全部取消勾选
  • 当我点击右侧删除按钮,删除右侧内容,左侧复选框取消勾选

实现

html,拿到数据后,先将左侧数据渲染到页面上

/* 左侧部分 */
<div class="left">
    <ul class="memberList">
       <li v-for="(item,index) in memberList" :key="index">
        <el-avatar 
        :src="item.admin_info?item.admin_info.avatar:''" />
        <span>{{ item.name }}</span>
        <el-checkbox 
        v-model="item.checked"
        @change="changeCheckbox(item)" />
       </li>
    </ul>
    <el-checkbox 
	    v-model="checked" 
	    @change="allSelect"
	 >全选</el-checkbox>
</div>
/* 右侧部分 */
<div class="right">
   <ul class="memberList">
      <li v-for="(it,ind) in seletList" :key="ind">
        <el-avatar :src="it.admin_info?it.admin_info.avatar:''" />
        <span>{{ it.name }}</span>
        <i class="el-icon-close close" @click="deleteFn(it,ind)" />
       </li>
    </ul>
</div>

js_43">js部分

javascript">export default {
	data(){
	return{
		memberList: [],
      	seletList: [],
      	checked: false,
		}
	},
	methods:{
	// 点击单个复选框
    changeCheckbox(item) {
    //如果点击了单选按钮,则添加到右侧数组里,如果再次取消,则判断点的按钮在
    //数组中是否存在,如果存在,找出下标,删除
      if (item.checked) {
        this.seletList.push(item)
      } else {
        const res = this.seletList.findIndex(it => {
          return item.name === it.name
        })
        this.seletList.splice(res, 1)
      }
      const res = this.memberList.findIndex(it => {
        return it.checked === false
      })
      if (res === -1) {
        this.checked = true
      } else {
        this.checked = false
      }
    },
     //  点击全选
    allSelect() {
      if (this.checked) {
        this.memberList.forEach(item => {
          item.checked = true
          this.seletList.push(item)
        })
      } else {
        this.memberList.forEach(item => {
          item.checked = false
        })
        this.seletList = []
      }
    },
     // 删除单个复选框
    deleteFn(it, ind) {
      this.seletList.splice(ind, 1)
      this.checked = false
      this.memberList.forEach(ite => {
        if (ite.name === it.name) {
          ite.checked = false
        }
      })
    },
	}
}


http://www.niftyadmin.cn/n/1354768.html

相关文章

electron 打包_Electron 开发指南

Electron 是什么Electron是一款利用Web技术开发跨平台桌面应用的框架&#xff0c;它的前身是Atom Shell。Electron将 Chromium 和 Node.js 的事件循环整合到了一起&#xff0c;同时提供了一些与原生系统交互的 API。哪些应用是用Electron开发的在Electron官方页面上罗列了上百款…

项目遇到的问题及解决及知识点回顾

项目遇到的问题及解决及知识点回顾ES6默认导出怎么导入从对象中直接获取到所有属性名和属性值的方法vue在模板中可以使用哪里定义的数据http请求put方式flex布局主轴结束方向css选择器使用deep深度选择将ASICC码转为对应字母的方法&#xff1a;正则表达式 . 的作用修改git提交注…

db2 删除schema中所有表_数据库中的引擎、事务、锁、MVCC(一)

一、数据库的存储引擎在数据库命令行页面输入&#xff1a; show engines&#xff1b;上面的出现结果表示&#xff0c;数据库支持的9种引擎。MyISAM1、简介MyISAM是MySQL中常见的存储引擎&#xff0c;曾经是MySQL的默认存储引擎。MyISAM是基于ISAM引擎发展起来的&#xff0c;增加…

js中原型,原型链理解

js中原型&#xff0c;原型链图解 原型链基本思想是&#xff1a; 其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法

mybatis update返回值_Java中Mybatis学习总结(二)Mapper代理开发,需要遵循哪些?...

一、概要1、原始DAO开发中存在的问题:(1)DAO实现方法体中存在很多过程性代码。(2)调用SqlSession的方法(select/insert/update)需要指定Statement的id&#xff0c;存在硬编码&#xff0c;不利于代码维护。2、Mapper动态代理方法&#xff1a;程序员只需要写dao接口(Mapper)&…

python if name main 的作用_python 中if __name__ = '__main__' 的作用

python 中if__name__ __main__ 的作用 前言 首先我们要知道在python里面万物皆对象&#xff0c;模块也是对象&#xff0c;并且所有的模块都有一个内置属性 __name__。 一个模块的 __name__ 的值取决于如何应用模块。 如果 import 一个模块&#xff08;调用&#xff09;&#x…

vue中hash和history区别

vue中hash和history区别vue的路由分为俩种模式&#xff1a;hash模式 、history模式最大的区别就是hash有一个#hash的兼容性比较高&#xff0c;可以直接在项目布置上线时使用hash模式下&#xff0c;#后面所有的字符&#xff0c;不包含在http请求中&#xff0c;所以不会重新刷新页…

使用Vue解决跨域

使用Vue解决跨域问题 vue2解决跨域问题 1.创建vue.config.js const { defineConfig } require(vue/cli-service) module.exports defineConfig({devServer: {proxy: {/api: {target: 域名地址, //接口域名changeOrigin: true, //是否跨域pathRewrite: {//路径重置^/api: }}…