vue-自定义组件-自定义checkbox效果

一个学生的问题

需求

完成如下的checkbox效果
在这里插入图片描述

写了个简单的demo

子组件

<template lang="">
  <div>
    <div
      class="ck"
      v-for="(item, index) in items"
      :key="index"
      :checked="item.checked"
      @click.prevent="item.checked=!item.checked"
    >
      <span>{{ item.text }}</span>
    </div>
  </div>
</template>
<script>
export default {
  name: "MyCheckBox",
  props: {
    items: {
      type: Array,
      required: true
    }
  },
  data() {
    return {};
  },
  methods: {
      switchCk(checked){
          console.log('switchCk');
          checked!=checked
      },
  }
};
</script>
<style scoped>
.ck {
  margin: 0px 5px;
  display: inline-block;
  border-radius: 30px;
  background-color: #ebeef7;
  padding: 5px;
  background-image: url("./icon-ck-normal.png");
  background-repeat: no-repeat;
  background-position: 96% center;
  padding-right: 40px;
}
.ck[checked] {
  background-color: #00bf77;
  background-image: url("./icon-ck-checked.png");
}
</style>

父组件

导入

import MyCheckBox from "./MyCheckBox.vue";

注册

 components: {
    MyCheckBox
  },

使用

<my-check-box @change="onChange" :items="ckItems"> </my-check-box>

数据

ckItems: [
        { text: "人员死亡", checked: false },
        { text: "伤害妇女", checked: true },
        { text: "SSP人员涉离(即公安人员)", checked: false },
        { text: "SSP人员涉离(即公安人员)受害 ", checked: true },
        { text: "高于四层建筑", checked: false }
      ],

数据获取

printCkItems() {
      var checkedStr = this.ckItems
        .map(function(obj) {
          return obj.checked;
        })
        .join(",");
      alert(checkedStr);
    },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值