Vue自定义多选组件使用详解


Posted in Javascript onSeptember 08, 2020

本文实例为大家分享了Vue自定义多选组件使用的具体代码,供大家参考,具体内容如下

子组件(选项卡)

checkBoxCard.vue

<template>
 <div class="checkBoxCard">
  <div :class="`box ${check && 'boxCheck'}`" @click="checked(), updateData()">
   {{ name }}
  </div>
 </div>
</template>

<script>
export default {
 name: "checkBoxCard",
 props: {
  name: String,
  checkIndex: {
   type: Number,
   default: null,
  },
 },
 data() {
  return {
   radio: 0,
   check: false,
   radioName: "",
   list: [],
  };
 },
 methods: {
  checked() {
   if (this.radio == 1) {
    this.check = false;
    this.radio = 0;
   } else if (this.radio == 0) {
    this.check = true;
    this.radio = 1;
   }
  },
  updateData() {
   if (this.radio == 1) {
    this.radioName = this.name;
   } else if (this.radio == 0) {
    this.radioName = "";
   }
   this.$emit("updateSurveyData", this.radioName, this.checkIndex);
  },
 },
 mounted() {},
 created() {},
};
</script>

<style lang="scss" scoped>
.checkBoxCard {
 margin-right: 15px;
 display: inline-block;
 margin-top: 10px;
}
.boxCheck {
 color: rgba(183, 37, 37, 1);
 background: bisque;
}
.box {
 border: 0.55px solid #eee;
 padding: 5px 10px;
 font-size: 3.73333vw;
 border-radius: 10px;
}
</style>

父组件

checkBox.vue

<template>
 <div class="checkBox">
  <div class="title">
   选择
  </div>

  <div class="card">  
    <CheckBoxCard
     v-for="item in list"
     :key="item.value"
     :name="item.name"
     :checkIndex="item.value"
     @updateSurveyData="updateSurveyData"
    />
  </div>
 </div>
</template>

<script>
import CheckBoxCard from "./checkBoxCard";
export default {
 name: "checkBox",
 components: {
  CheckBoxCard,
 },
 data: function () {
  return {
   list: [
    { value: 0, name: "选项1" },
    { value: 1, name: "选项2" },
    { value: 2, name: "选项3" },
    { value: 3, name: "选项4" },
    { value: 4, name: "选项5" },
    { value: 5, name: "选项6" },
    { value: 6, name: "其他" },
   ],
   name: "",
    checkList: [],
  };
 },
 methods: {
  updateSurveyData(question, index) {
   this.checkList[index] = question;
    console.log(this.checkList.filter((x) => x != ""));
   console.log(this.checkList.filter((x) => x != "").join());
  },
 },
 created() {},
};
</script>

<style scoped>
.checkBox {
 padding: 5.33333vw 4vw;
 border-bottom: 0.55px solid #eee;
 background: white;
}

.title {
 text-align: left;
 color: #323233;
 font-size: 3.73333vw;
 padding-bottom: 10px;
 line-height: 30px;
}
</style>

效果图

Vue自定义多选组件使用详解

Vue自定义多选组件使用详解

Vue自定义多选组件使用详解

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

Javascript 相关文章推荐
JS 统计时间
Mar 09 Javascript
javascript 操作文件 实现方法小结
Jul 02 Javascript
PHP开发者必须掌握的6个关键字
Apr 14 Javascript
5款JavaScript代码压缩工具推荐
Jul 07 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
May 25 Javascript
JS Array创建及concat()split()slice()的使用方法
Jun 03 Javascript
vue cli使用绝对路径引用图片问题的解决
Dec 06 Javascript
angular4 JavaScript内存溢出问题
Mar 06 Javascript
JavaScript引用类型Array实例分析
Jul 24 Javascript
小程序点击图片实现自动播放视频
May 29 Javascript
服务端预渲染之Nuxt(使用篇)
Apr 08 Javascript
vue实现在v-html的html字符串中绑定事件
Oct 28 Javascript
vue项目中微信登录的实现操作
Sep 08 #Javascript
关于element-ui表单中限制输入纯数字的解决方式
Sep 08 #Javascript
快速解决element的autofocus失效问题
Sep 08 #Javascript
vue axios请求成功却进入catch的原因分析
Sep 08 #Javascript
JavaScript数组类型Array相关的属性与方法详解
Sep 08 #Javascript
vue中后端做Excel导出功能返回数据流前端的处理操作
Sep 08 #Javascript
vue等两个接口都返回结果再执行下一步的实例
Sep 08 #Javascript
You might like
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
php JWT在web端中的使用方法教程
2018/09/06 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
js实现DIV的一些简单控制
2007/06/04 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
微信小程序 for 循环详解
2016/10/09 Javascript
微信小程序 loading 详解及实例代码
2016/11/09 Javascript
javascript中活灵活现的Array对象详解
2016/11/30 Javascript
Servlet实现文件上传,可多文件上传示例
2016/12/05 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
Vue中util的工具函数实例详解
2019/07/08 Javascript
vue动态路由:路由参数改变,视图不更新问题的解决
2019/11/05 Javascript
[02:25]DOTA2英雄基础教程 生死判决瘟疫法师
2013/12/06 DOTA
[01:15:18]2014 DOTA2国际邀请赛中国区预选赛 LGD VS Speed Gaming.cn
2014/05/22 DOTA
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
Python导入oracle数据的方法
2015/07/10 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
2015/11/13 Python
python 截取 取出一部分的字符串方法
2017/03/01 Python
python 判断网络连通的实现方法
2018/04/22 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
Python3的socket使用方法详解
2020/02/18 Python
复古斯堪的纳维亚儿童服装:Baby go Retro
2017/09/09 全球购物
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
运动会开幕式邀请函
2014/02/03 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
2016新年致辞
2015/08/01 职场文书
redis实现的四种常见限流策略
2021/06/18 Redis
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python