怎样使用vue实现全选反选

这次给大家带来怎样使用vue实现全选反选,使用vue实现全选反选的注意事项有哪些,下面就是实战案例,一起来看一下。

全选功能可以说是前端开发中非常常见的一个功能,以前的项目开发用jQuery开发比较多。最近在使用vue前端框架重构之前的项目。从jQuery到vue的转变主要是一个思想想的转变,是将原有的直接操作dom的思想转变到操作数据,用数据驱动dom,也是vue框架的一个核心思想,思想转变过来,对功能的实现自然容易理解一些。

例如下面这个简单的demo

怎样使用vue实现全选反选

按照jQuery的思想来做的话,要选中全选checkbox和所有的checkbox项,分别注册选中事件,判断选中状态来给相关的checkbox设置对应的状态,这就涉及到很多的dom操作。

下面就看一下vue数据驱动dom的思想来实现这一功能。

vue数据驱动dom实现功能

new Vue({ el: '#app', data(){ return { checkData: [] // 双向绑定checkbox数据数组 } }, watch: { // 监视双向绑定的数据数组 checkData: { handler(){ // 数据数组有变化将触发此函数 if(this.checkData.length == 3){ document.querySelector('#quan').checked = true; }else { document.querySelector('#quan').checked = false; } }, deep: true // 深度监视 } }, methods: { checkAll(e){ // 点击全选事件函数 var checkObj = document.querySelectorAll('.checkItem'); // 获取所有checkbox项 if(e.target.checked){ // 判定全选checkbox的勾选状态 for(var i=0;i<checkObj.length;i++){ if(!checkObj[i].checked){ // 将未勾选的checkbox选项push到绑定数组中 this.checkData.push(checkObj[i].value); } } }else { // 如果是去掉全选则清空checkbox选项绑定数组 this.checkData = []; } } } });

登录后复制

利用vue的双向数据绑定v-model命令,当勾选时,checkbox的value值会自动push到所绑定的数组checkData中去,省去了不少对dom的操作。

如果是固定选项这样是可以实现的,但是这种方法有一些弊端,双向绑定数组数据是写死的,不太灵活,如果增加了checkbox选项,要更改wach里绑定数组的长度判断。

有时候checkbox选项也是后台动态获取过来的,这样也灵活一些。

例如后台数据是这样的:

  ajaxData: [{    name: 'a',    value: 'apple'  },{    name: 'b',    value: 'banana'  },{    name: 'c',    value: 'orange'  }]

登录后复制

需要先动态渲染checkbox选项,在进行数据绑定。

new Vue({ el: '#app', data(){ return { ajaxData: [{ // 后台请求过来的数据 name: '选项1', value: 'apple' },{ name: '选项2', value: 'banana' },{ name: '选项3', value: 'orange' }], checkData: [] // 双向数据绑定的数组 } }, watch: { checkData: { // 监视双向绑定的数组变化 handler(){ if(this.checkData.length == this.ajaxData.length){ document.querySelector('#quan').checked = true; }else { document.querySelector('#quan').checked = false; } }, deep: true } }, methods: { checkAll(e){ // 点击全选事件 if(e.target.checked){ this.ajaxData.forEach((el,i)=>{ // 数组里没有这一个value才push,防止重复push if(this.checkData.indexOf(el.value) == '-1'){ this.checkData.push(el.value); } }); }else { // 全不选选则清空绑定的数组 this.checkData = []; } } } });

登录后复制

怎样使用vue实现全选反选

方法并不是最优的写法,也存在一些弊端,欢迎各位指点迷津,一起探讨。

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

怎样使用vue文件树组件

JavaScript EventEmitter底层逻辑剖析

以上就是怎样使用vue实现全选反选的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2756577.html

(0)
上一篇 2025年3月8日 07:40:32
下一篇 2025年3月8日 07:40:41

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何使用Vue实现Observer

    这次给大家带来如何使用Vue实现Observer,使用Vue实现Observer的注意事项有哪些,下面就是实战案例,一起来看一下。 导语: 本文是对 Vue 官方文档深入响应式原理(https://cn.vuejs.org/v2/guide…

    2025年3月8日
    100
  • 如何操作vue2实现购物车和地址选配

    这次给大家带来如何操作vue2实现购物车和地址选配,操作vue2实现购物车和地址选配的注意事项有哪些,下面就是实战案例,一起来看一下。 首先,vue基础js写法 new Vue({ el:”#app”, //模型 data:{ }, fil…

    编程技术 2025年3月8日
    200
  • 如何使用Koa2文件上传下载

    这次给大家带来如何使用Koa2文件上传下载,使用Koa2文件上传下载的注意事项有哪些,下面就是实战案例,一起来看一下。 前言 上传下载在 web 应用中还是比较常见的,无论是图片还是其他文件等。在 Koa 中,有很多中间件可以帮助我们快速的…

    编程技术 2025年3月8日
    200
  • 怎么使用spirngmvc js传递复杂json参数到controller

    这次给大家带来怎么使用spirngmvc js传递复杂json参数到controller,使用spirngmvc js传递复杂json参数到controller的注意事项有哪些,下面就是实战案例,一起来看一下。 Spring MVC在接收集…

    编程技术 2025年3月8日
    200
  • 如何使用js内el表达式与非空判断

    这次给大家带来如何使用js内el表达式与非空判断,使用js内el表达式与非空判断的注意事项有哪些,下面就是实战案例,一起来看一下。 页面跳转后,使用spring mvc向前端页面传过来一个json对象,要在js中获取后,做处理。 返回的js…

    编程技术 2025年3月8日
    200
  • vue-cli开发环境实现跨域请求的方法

    本篇文章主要介绍了vue-cli开发环境实现跨域请求的方法,现在分享给大家,也给大家做个参考。 前端开发时,请求后台接口经常需要跨域,vue-cli实现跨域请求只需要打开config/index.js,修改如下内容即可。 //例如要请求的接…

    编程技术 2025年3月8日
    200
  • 怎样正确使用vue组件复用功能

    这次给大家带来怎样正确使用vue组件复用功能,正确使用vue组件复用功能的注意事项有哪些,下面就是实战案例,一起来看一下。 一、什么是组件 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装…

    编程技术 2025年3月8日
    200
  • 从零开始使用React Router v4

    这次给大家带来从零开始使用React Router v4,从零开始使用React Router v4的注意事项有哪些,下面就是实战案例,一起来看一下。 江湖传言,目前官方同时维护 2.x 和 4.x 两个版本。(ヾ(。ꏿ﹏ꏿ)ノ゙咦,此刻相…

    2025年3月8日
    200
  • 怎样正确使用vuex项目结构目录与配置

    这次给大家带来怎样正确使用vuex项目结构目录与配置,使用vuex项目结构目录与配置的注意事项有哪些,下面就是实战案例,一起来看一下。 首先先正经的来一段官网的”忠告”: vuex需要遵守的规则: 一、应用层级的状态…

    2025年3月8日
    200
  • 怎样使用JS求Number类型数组最大元素

    这次给大家带来怎样使用JS求Number类型数组最大元素,使用JS求Number类型数组最大元素的注意事项有哪些,下面就是实战案例,一起来看一下。 以下介绍四个方法。 1. 不使用任何库函数 代码如下: function findMax1 …

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论