vue自定义开关组件使用详解

本文实例为大家分享了vue自定义开关组件的具体代码,供大家参考,具体内容如下

switch.vue:

<template>
  <div class="disLB">
    <div class="switch disLB" @click="toggleSwitch" :class="isOpen?'switch-on':''">
      <span class="disB switch-circle" :class="isOpen?'on':''"></span>
    </div>
    
  </div>
</template>

<script>
export default {
  data() {
    return {
      // isOpen: false
    }
  },
  props: ["isOpen"],
  methods: {
    toggleSwitch() {
      // 子组件不能直接修改父组件的数据,要通过$emit
      this.$emit('changeSwitch')
    }
  }
  
}
</script>

<style lang="less" scoped>
  .switch {
    position: relative;
    border-radius: 20px;
    border: 1px solid #dfdfdf;
    width: 45px;
    height: 23px;
    .switch-circle {
      position: absolute;
      width: 21px;
      height: 21px;
      background-color: #fff;
      border-radius: 50%;
      border: 1px solid #dfdfdf;
      box-shadow: 0 1px 1px #ccc;
    }
    .on {
      right: 0;
      // background-color: #64bd63;
      border-color: #64bd63;
      transform: translate(X);
      transition: transform 0.5s, right 0.5s;
    }
  }
  .switch-on {
    background-color: #64bd63;
  }
</style>

在父组件中引入并传值使用:

<template>
    <toggle-switch :isOpen="systemConfig.enable_email" @changeSwitch="changeSwitch" v-model="systemConfig.enable_email"></toggle-switch>
</template>

<script>
import toggleSwitch from '../../components/switch.vue';
export default {
    data() {
        return {}
    },
    components: {
        toggleSwitch
    },
    methods: {
        changeSwitch() {
          this.systemConfig.enable_email = !this.systemConfig.enable_email;
        }
    }
}

效果图:

注:

父组件向子组件传值,可以直接通过:isOpen="systemConfig.enable_email"传递数据,子组件通过 prop 接收数据:props: ["isOpen"],
但子组件不能直接修改父组件的数据,可以通过 $emit 调用父组件的方法来修改父组件的数据,$emit 的第一个参数要与父组件 @ 后的名称保持一致。

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

(0)

相关推荐

  • vue自定义switch开关组件,实现样式可自行更改

    用法: import switchc from './public/switch' <switchc v-model="value1" text="on|off"></switchc> 属性 text 非必填,类型为string,要求格式为"on|off" ,以 | 分隔 事件 change html部分: <template> <div> <span class="weui-swi

  • vue.js封装switch开关组件的操作

    我的项目本来用的element,但是switch开关不符合设计要求,于是自己封装了一个switch组件,并且实现了switch开关的双向数据绑定 <template> <label role="checkbox" :class="['switch', { toggled }]"> <input type="checkbox" class="switch-input" @change="t

  • vue自定义开关组件使用详解

    本文实例为大家分享了vue自定义开关组件的具体代码,供大家参考,具体内容如下 switch.vue: <template>   <div class="disLB">     <div class="switch disLB" @click="toggleSwitch" :class="isOpen?'switch-on':''">       <span class="di

  • Vue 自定义动态组件实例详解

    现在基于vue的UI组件库有很多,比如iview,element-ui等.但有时候这些组件库满足不了我们的开发需求,这时候我们就需要自己写一个插件. 举第一个栗子 用vue-cli搭建好项目目录之后,在src/components下面新建一个文件夹放我们要写的插件,如图所示: index.vue里写我们的组件,代码如下: index.js里面写index.vue的install方法,并用Vue.component注册组件,代码如下: 接下来我们要在默认的main.js里将刚刚写的index.js

  • vue自定义指令directive实例详解

    下面给大家介绍vue自定义指令directive,具体内容如下所示: 官网截图实例 vue除了一些核心的内部定义的指令(v-model,v-if,v-for,v-show)外,vue也允许用户注册自己的一些功能性的指令,有时候你实在是要对Dom操作,这个时候是自定义指令最合适的了. 来直接看例子:当页面加载时使得元素获得焦点(autofocus 在移动版 Safari 是不支持的),就是当页面加载好了,不做任何的操作使得表单自动获得焦点,光标自动在某个表单上代码如下: Vue.directive

  • vue自定义全局共用函数详解

    如果你需要让一个工具函数在每个组件可用,可以把方法挂载到 Vue.prototype上. 在main.js中: Vue.prototype.method = function () {} 组件中调用: this.method() 以上这篇vue自定义全局共用函数详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Vue自定义指令v-focus实例详解

    目录 前言 自定义指令 directive 项目实际使用 技术背景 实际操作 优势 setTimeout(fn, 0) 永远的神 $nextTick(callback) 小结 前言 本文直接参考vue2.0官方文档, 并演示博主项目中的使用 自定义指令 directive 除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令.注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件.然而,有的情况下,你仍然需要对普通 DOM 元素进行底层操作,这时候就

  • 微信小程序自定义prompt组件步骤详解

    步骤一:新建一个component的文件夹,用来放所有的自定义组件:  步骤二:在该目录下新建一个prompt的文件夹,用来放prompt组件:  步骤三:右击–>新建–>component 直接上代码 wxml <view class="prompt-box" hidden="{{isHidden}}"> <view class="prompt-content contentFontColor"> <v

  • vue地区选择组件教程详解

    概述 主要用于全国地区数据的操作,包括省,市,区三级联动,地区数据的添加和删除: 在操作地区数据时,以前也用过树形的地区选择组件,但因其在再操作大量的地区数据时,渲染缓慢,所以我们就换了另一种数据展示形式和交互形式,从而就有了这个组件. 注意:该组件是 vue.js 组件 demo 抢鲜体验请点击这里 demo API Props 参数 类型 说明 area Array 传入组件的地区的数据 Events 事件名 参数 说明 selected area 组件中选中的地区 详细说明 Props a

  • C/C++ Qt TableDelegate 自定义代理组件使用详解

    TableDelegate 自定义代理组件的主要作用是对原有表格进行调整,例如默认情况下Table中的缺省代理就是一个编辑框,我们只能够在编辑框内输入数据,而有时我们想选择数据而不是输入,此时就需要重写编辑框实现选择的效果,代理组件常用于个性化定制Table表格中的字段类型. 在自定义代理中QAbstractItemDelegate是所有代理类的抽象基类,我们继承任何组件时都必须要包括如下4个函数: CreateEditor() 用于创建编辑模型数据的组件,例如(QSpinBox组件) SetE

  • vue文件树组件使用详解

    本文实例为大家分享了vue文件树组件的实现方法,供大家参考,具体内容如下 本文主要是分析vue官方仓库里的文件树组件[vue github] demo可以查看 https://codepen.io/shayminsky21/pen/xXwxgm 首先是html模板: <li> <div //文件夹加粗表示 :class="{bold: isFolder}" //处理单击事件 打开闭合文件列表 @click="toggle" //处理双击事件 双击子

  • Vue自定义指令使用方法详解

    Vue自定义指令的使用,具体内容如下 1.自定义指令的语法 Vue自定义指令语法如下: Vue.directive(id, definition) 传入的两个参数,id是指指令ID,definition是指定义对象.其中,定义对象可以提供一些钩子函数 2.钩子函数 定义对象的钩子函数如下: 钩子函数的参数 el: 指令所绑定的元素,可以用来直接操作 DOM . binding: 一个对象,包含以下属性: *name: 指令名,不包括 v- 前缀. *value: 指令的绑定值, 例如: v-my

随机推荐