vue使用vant中的checkbox实现全选功能


Posted in Vue.js onNovember 17, 2020

本文实例为大家分享了vue使用vant中的checkbox实现全选功能的具体代码,供大家参考,具体内容如下

<template>
 <div class="visiblePeople">
 <topbar />
 <ul class="list clear_float">
 <li v-for="(item, index) in people" :key="index">
 <van-checkbox
  v-model="item.flag"
  class="listli"
 ></van-checkbox>
 <div class="right">
  <p>{{ item.name }}</p>
  <p>{{ item.id }}</p>
 </div>
 </li>
 </ul>
 <div class="bottom">
 <div class="left">
 <van-checkbox v-model="allcheck" class="all">全选</van-checkbox>
 </div>
 <button @click="jump">确定</button>
 </div>
 </div>
</template>
 
<script>
export default {
 data() {
 return {
 people: [
 { id: "002", name: "陈阳", flag: true },
 {
  id: "003",
  name: "王苗苗",
  flag: true,
 },
 {
  id: "004",
  name: "张梁俊",
  flag: true,
 },
 {
  id: "005",
  name: "刘路",
  flag: true,
 },
 ],
 };
 },
 methods: {
 //点击确定后跳转回新增合同页面
 jump() {
 this.$router.push("/addContract");
 },
 //单选按钮切换
 // change(index) {
 // this.people[index].flag = !this.people[index].flag;
 // console.log(this.people[index].flag);
 // },
 },
 computed:{
 allcheck:{
 get(){
 //取值
 //every方法,数组中每一项都满足一个条件返回true
 return this.people.every(item=>item.flag)
 },
 set(newValue){
 //设置值
 console.log('触发set方法')
 this.people.map(item=>item.flag=newValue)
 }
 },
 filterAll(){
 return this.people.filter(item=>item.flag).length
 },
 count(){
 let checkedList=this.people.filter(item=>item.flag)
 return checkedList.length.reduce((total,item)=>{
 return total+item.num
 },0)
 }
 }
};
</script>
<style lang="less" scoped>
.list {
 background: #f8f9fb;
 height: 574px;
 li {
 height: 56px;
 margin: 10px 0 10px 0;
 float: left;
 img {
 width: 19px;
 height: 19px;
 float: left;
 margin: 13px;
 &.on {
 display: block;
 }
 &.off {
 display: none;
 }
 }
 .listli {
 float: left;
 margin: 19px 13px 0 13px;
 }
 .right {
 float: left;
 background: #ffffff;
 width: 328px;
 height: 56px;
 padding: 0px 0 0 13px;
 box-sizing: border-box;
 p:nth-of-type(1) {
 font-size: 15px;
 font-family: PingFang SC;
 font-weight: 400;
 color: #000000;
 line-height: 29px;
 }
 p:nth-of-type(2) {
 font-size: 13px;
 font-family: PingFang SC;
 font-weight: 400;
 color: #666666;
 line-height: 14px;
 }
 }
 }
}
.bottom {
 height: 50px;
 position: fixed;
 bottom: 0;
 .left {
 width: 237px;
 background: #ffffff;
 height: 100%;
 float: left;
 img {
 width: 18px;
 float: left;
 margin: 18px 13px 0 18px;
 &.on {
 display: block;
 }
 &.off {
 display: none;
 }
 }
 .all {
 margin: 17px 0 0 14px;
 }
 p {
 float: left;
 font-size: 13px;
 font-family: PingFang SC;
 font-weight: 400;
 color: #333333;
 margin-top: 18px;
 }
 }
 button {
 float: left;
 width: 138px;
 height: 50px;
 line-height: 50px;
 background: #336afa;
 color: #ffffff;
 }
}
</style>

本次遇到的问题是自己一开始没发现在people数组里面,定义的每一项flag的值设置的类型为字符串型即flag="true",导致一开始进入页面全部无论值为true还是false,复选框都是选中效果,修改之后便没有了此问题。

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

更多vue学习教程请阅读专题《vue实战教程》

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
Vue $attrs &amp; inheritAttr实现button禁用效果案例
Dec 07 Vue.js
vue 通过base64实现图片下载功能
Dec 19 Vue.js
通过vue.extend实现消息提示弹框的方法记录
Jan 07 Vue.js
详解template标签用法(含vue中的用法总结)
Jan 12 Vue.js
vue-resource 拦截器interceptors使用详解
Jan 18 Vue.js
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
Jan 22 Vue.js
如何在 Vue 表单中处理图片
Jan 26 Vue.js
基于vue的video播放器的实现示例
Feb 19 Vue.js
VUE实现吸底按钮
Mar 04 Vue.js
vue实现倒计时功能
Mar 24 Vue.js
详解Vue中$props、$attrs和$listeners的使用方法
Feb 18 Vue.js
VUE使用draggable实现组件拖拽
Apr 06 Vue.js
vue中音频wavesurfer.js的使用方法
Feb 20 #Vue.js
vue+vant实现购物车全选和反选功能
Nov 17 #Vue.js
在vue中通过render函数给子组件设置ref操作
Nov 17 #Vue.js
vue+iview分页组件的封装
Nov 17 #Vue.js
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 #Vue.js
vue+iview实现分页及查询功能
Nov 17 #Vue.js
vue中echarts的用法及与elementui-select的协同绑定操作
Nov 17 #Vue.js
You might like
用PHP中的 == 运算符进行字符串比较
2006/11/26 PHP
zend framework配置操作数据库实例分析
2012/12/06 PHP
基于php-fpm 参数的深入理解
2013/06/03 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
javascript 多浏览器 事件大全
2010/03/23 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
常用javascript表单验证汇总
2020/07/20 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
Bootstrap Table使用整理(四)之工具栏
2017/06/09 Javascript
微信小程序自定义组件
2017/08/16 Javascript
详解vue-cli 接口代理配置
2017/12/13 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
layui表格内容溢出的解决方法
2019/09/06 Javascript
[05:53]敌法师的金色冠名ID"BurNIng",是传说,是荣耀
2020/07/11 DOTA
python进阶教程之词典、字典、dict
2014/08/29 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
Python中return self的用法详解
2018/07/27 Python
解决使用PyCharm时无法启动控制台的问题
2019/01/19 Python
python实现两个文件夹的同步
2019/08/29 Python
python3 mmh3安装及使用方法
2019/10/09 Python
python的json包位置及用法总结
2020/06/21 Python
详解html5页面 rem 布局适配方法
2018/01/12 HTML / CSS
巡警年度自我鉴定
2014/02/21 职场文书
学校周年庆活动方案
2014/08/22 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
2014党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
银行培训心得体会范文
2016/01/09 职场文书
详解redis在微服务领域的贡献
2021/10/16 Redis
python基础之类属性和实例属性
2021/10/24 Python
在js中修改html body的样式
2021/11/11 Javascript