返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue 的全选组件封装你知道多少
  • 743
分享到

vue 的全选组件封装你知道多少

2024-04-02 19:04:59 743人浏览 安东尼
摘要

效果  封装的组件 <template> <el-fORM-item :label="label"> <el-checkbox

效果

 封装的组件

<template>
  <el-fORM-item :label="label">
    <el-checkbox :indeterminate="isIndeterminateBool" v-model="checkAll"
                 @change="handleCheckAllChange">全选
    </el-checkbox>
    <el-checkbox-group v-model="checkList" @change="handleCheckedCitiesChange">
      <el-checkbox :label="key" v-for="(item,key) in this.channelList"
                   :key="key">{{ item }}
      </el-checkbox>
    </el-checkbox-group>
  </el-form-item>
</template>
<script>
import {channelList} from "@/utils/app-channel";
export default {
  name: "Index",
  data() {
    return {
      //渠道列表 全部渠道
      channelList: channelList,
      //  checkbox 的不确定状态,一般用于实现全选的效果
      isIndeterminateBool: true,
      //全选默认不勾选
      checkAll: false,
      data: this.checkList,
    }
  },
  computed: {
    checkList: {
      get: function () {
        return (this.item[this.formDBName] || '').split("|").filter(str => (!!str));
      },
      set: function (newValue) {
        this.item[this.formDBName] = newValue.join("|");
      }
    }
  },
  props: {
    //表单名称
    label: {
      type: String,
      required: true
    },
    //当前选中项
    item: {
      type: Object,
      required: true
    },
    formDBName: {
      type: String,
      required: true
    }
  },
  methods: {
    getArrayCheckList() {
      return (this.item[this.formDBName] || '').split("|").filter(str => (!!str));
    },
    //将数据返回给父组件
    setChooseData(data) {
      this.$emit("choose-data", this.formDBName, data)
    },
    //value 代表选中还是未选中 ture false两个取值
    handleCheckAllChange(value) {
      const chooseChannel = Object.keys(this.channelList)
      this.checkList = value ? chooseChannel : [];
      this.isIndeterminateBool = false;
      this.checkAll = value;
      const formData = this.checkList.join("|");
      this.setChooseData(formData)
    },
    //选中后计算全选
    handleCheckedCitiesChange(value) {
      const chooseChannel = Object.keys(this.channelList);
      let checkedCount = value.length;
      this.checkAll = checkedCount === chooseChannel.length;
      this.isIndeterminateBool = checkedCount > 0 && checkedCount < chooseChannel.length;
      const formData = value.join("|");
      this.setChooseData(formData)
    },
  },
  mounted() {
    // .split("|").filter(str => (!!str && typeof (str) == 'string'))
  }
}
</script>
<style scoped>
</style>

渠道列表 

//
export const channelList = {
    "anguo": "安果",
    "baidu": "百度",
    "huawei": "华为",
    "samsung": "三星",
    "oppo": "OPPO",
    "sanliuling": "360",
    "meizu": "魅族",
    "vivo": "VIVO",
    "wandoujia": "豌豆荚",
    "xiaomi": "小米",
    "yyb": "应用宝",
    "yyh": "应用汇",
};

父组件使用

    <el-card shadow="hover">
            <multiple-choice :item="item" label="渠道/广告开关"
                             form-d-b-name="channel" @choose-data="onCheckResult"></multiple-choice>
          </el-card>

item[channle] 是存入字符串的以|分割的数据

比如

baidu|anguo|yyb

这样

onCheckResult
   onCheckResult(dbName, res) {
      this.item[dbName] = res;
    }

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容! 

--结束END--

本文标题: vue 的全选组件封装你知道多少

本文链接: https://lsjlt.com/news/138536.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • vue 的全选组件封装你知道多少
    效果  封装的组件 <template> <el-form-item :label="label"> <el-checkbox ...
    99+
    2024-04-02
  • Vue组件之间的通信你知道多少
    目录Vue组件间通信1.父向子传递数据1.props的大小写2.props的两种写法3.传递动态props2.子向父传递数据3.兄弟(任意)组件间的传值3.1全局事件总线3.2消息订...
    99+
    2024-04-02
  • React组件中的state和setState()你知道多少
    目录state的基本使用setState()修改状态解决方法:总结state的基本使用 状态(state)即数据,是组件内部的私有数据,只能在组件内部使用 state的值是对象,可以...
    99+
    2024-04-02
  • vue中全选组件封装的示例分析
    这篇文章将为大家详细讲解有关vue中全选组件封装的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。效果 封装的组件<template>  <el-fo...
    99+
    2023-06-29
  • jQuery的事件处理你知道多少
    目录一、jQuery的事件处理1、页面载入事件2、事件绑定(bind)3、反绑定事件(unbind)4、一次性事件绑定(one)5、模拟鼠标悬停(hover)总结一、jQuery的事...
    99+
    2024-04-02
  • 你知道怎么基于 React 封装一个组件吗
    目录antd 是如何封装组件的仓库地址divider 组件源代码如何暴露组件属性如何设置统一类名前缀如何处理样式与类名divider 组件样式源代码总结前言 很多小伙伴在第一次尝试封...
    99+
    2024-04-02
  • vue实现全选组件封装实例详解
    效果  封装的组件 <template> <el-form-item :label="label"> <el-checkbox ...
    99+
    2024-04-02
  • Python的这些库,你知道多少?
    目录一、导读二、前戏三、Python标准库四、科学计算与统计五、数据处理与分析六、可视化七、机器学习、深度学习和强化学习八、自然语言处理一、导读 通常,开发大量原始代码是一个费时费力...
    99+
    2024-04-02
  • Spring的Aware接口你知道多少
    若 Spring 检测到 bean 实现了 Aware 接口,则会为其注入相应的依赖。所以通过让bean 实现 Aware 接口,则能在 bean 中获得相应的 Spring 容器资...
    99+
    2024-04-02
  • Vue封装全局toast组件的应用
    这篇文章主要介绍“Vue封装全局toast组件的应用”,在日常操作中,相信很多人在Vue封装全局toast组件的应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue封装全局toast组件的应用”的疑惑有所...
    99+
    2023-06-20
  • Vue如何封装全局toast组件
    本篇内容主要讲解“Vue如何封装全局toast组件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue如何封装全局toast组件”吧!一. 借助 vue-cli...
    99+
    2024-04-02
  • vue-antd form组件封装全过程
    目录表单项–公用组件(vue-antd)1、废话不多说,先看具体效果2、组件代码如下3、在相应地方进行引入总结表单项–公用组件(vue-antd) 1、废话不...
    99+
    2023-05-17
    vue-antd form组件封装 form组件封装 vue-antd form组件
  • Node.js的基本应用你知道多少
    目录一、Node.js是什么1、浏览器的内核2、为什么要用node.js3、node.js应用程序的示例二、Node.js中的npm三、yarn包管理器四、REPL环境总结一、Nod...
    99+
    2024-04-02
  • Java中的运算符你知道多少
    目录1.算术运算符1.基本的算数运算符:+ - * / %2.增量运算符**+= -= /= = %=*3.自增自减运算符 ++ – --2.关系运算符3.逻辑...
    99+
    2024-04-02
  • vue组件间传值的方法你知道几种
    目录一丶父子组件传值二丶子父组件传值三丶兄弟组件传值四丶$parent /$children与ref总结一丶父子组件传值 先在父组件中给子组件的自定义属性绑定一个 父组件的变量 &l...
    99+
    2024-04-02
  • Vue生命周期中的组件化你知道吗
    目录引出生命周期销毁流程生命周期生命周期总结组件化 template: 非单文件组件 组件的几个注意点  组件的嵌套 &n...
    99+
    2024-04-02
  • 怎么用Vue封装全局toast组件
    本篇内容介绍了“怎么用Vue封装全局toast组件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一. 借助...
    99+
    2024-04-02
  • vue extend+promise封装全局弹窗组件
    本文实例为大家分享了vue extend+promise封装全局弹窗组件的具体代码,供大家参考,具体内容如下 因为项目没有引入第三方UI库,所以所有的公共组件都需要自己封装现在需要一...
    99+
    2024-04-02
  • C语言也有封装,继承和多态你知道吗
    目录封装继承多态函数的指针通过函数的指针实现多态总结我们知道封装、继承、多态是面向对象的三大特性,我们也知道C语言是面向过程的语言,那么可不可以在面向过程的语言中用面向对象的思想编程...
    99+
    2024-04-02
  • vue如何封装div框选时间的组件
    这篇文章主要为大家展示了“vue如何封装div框选时间的组件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue如何封装div框选时间的组件”这篇文章吧。div...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作