美文网首页技术论剑,崛起江湖
Switch开关控制禁用启用单选按钮组和下拉框

Switch开关控制禁用启用单选按钮组和下拉框

作者: 游海东 | 来源:发表于2019-11-28 16:10 被阅读0次

1. 功能实现

继上一篇ElementUI单选按钮控制下拉框,添加一个switch开关组件,当切换到禁用状态,单选按钮组和下拉框都不能编辑;当切换到启用状态,单选按钮组和下拉框可以进行选择和切换。

2. 使用技术

  • vue.js
  • vue-router
  • element
  • webpack

3. 实现源码

<template>
  <el-row :gutter="20">
    <el-col :span="5">
      <el-form ref="dataForm" :model="dataForm">
        <el-form-item label="禁用/启用">
          <el-switch v-model="dataForm.isDisabled"
                     active-color="#00FF00"
                     inactive-color="#ccc"
                     active-value="1"
                     inactive-value="0"
                     active-text="启用"
                     inactive-text="禁用"
                     @change="changeDisabled"></el-switch>
        </el-form-item>
        <el-form-item label="类型" prop="type">
          <el-radio-group ref="radios" v-model="dataForm.type" @change="changeType" :disabled="dataForm.disabled">
            <el-radio :label="1">A</el-radio>
            <el-radio :label="2">B</el-radio>
            <el-radio :label="3">C</el-radio>
            <el-radio :label="4">D</el-radio>
          </el-radio-group>
        </el-form-item>
        <el-form-item label="名称">
          <el-select v-model="dataForm.username" :disabled="dataForm.disabled">
            <el-option v-for="item in dataForm.options" :key="item.value" :label="item.label" :value="parseInt(item.value)"></el-option>
          </el-select>
        </el-form-item>
      </el-form>
    </el-col>
  </el-row>
</template>

<script>
  export default {
    name: 'Sa',
    data() {
      return {
        dataForm: {
          type: 1,
          username: '',
          isDisabled: false,
          disabled: true,
          options: [],
          option: [{
            label: 'AAA',
            value: '2019001',
            type: 'A'
          }, {
            label: 'AAB',
            value: '2019002',
            type: 'A'
          }, {
            label: 'AAC',
            value: '2019003',
            type: 'A'
          }, {
            label: 'AAD',
            value: '2019004',
            type: 'A'
          }, {
            label: 'BBA',
            value: '2019005',
            type: 'B'
          }, {
            label: 'BBB',
            value: '2019006',
            type: 'B'
          }, {
            label: 'BBC',
            value: '2019007',
            type: 'B'
          }, {
            label: 'BBD',
            value: '2019008',
            type: 'B'
          }, {
            label: 'CCA',
            value: '2019009',
            type: 'C'
          }, {
            label: 'CCB',
            value: '2019010',
            type: 'C'
          }, {
            label: 'CCC',
            value: '2019011',
            type: 'C'
          }, {
            label: 'CCD',
            value: '2019012',
            type: 'C'
          }, {
            label: 'DDA',
            value: '2019013',
            type: 'D'
          }, {
            label: 'DDB',
            value: '2019014',
            type: 'D'
          }, {
            label: 'DDC',
            value: '2019015',
            type: 'D'
          }, {
            label: 'DDD',
            value: '2019016',
            type: 'D'
          }]
        }
      }
    },
    mounted() {
      this.filterData('A')
    },
    methods: {
      changeType(val) {
        this.dataForm.username = ''
        var txt = this.$refs.radios.$children[val - 1].$el.innerText
        console.log(txt)
        this.filterData(txt)
      },
      filterData(params) {
        let options = this.dataForm.option
        let res = []
        for (let i = 0; i < options.length; i++) {
          if (params == options[i].type) {
            res.push(options[i])
          }
        }

        this.dataForm.options = res
      },
      changeDisabled(val){
        if(val == 1) {
          this.dataForm.disabled = false
        } else {
          this.dataForm.disabled = true
        }
        console.log(val)
      }
    }
  }
</script>

<style>
</style>

4. 源码分析

4.1 el-switch组件属性说明

(1)active-color:switch 打开时的背景色
(2)inactive-color:switch 关闭时的背景色
(3)active-value:switch 打开时的值
(4)inactive-value:switch 关闭时的值
(5)active-text:switch 打开时的文字描述
(6)inactive-text:switch 关闭时的文字描述

4.2 el-switch组件事件说明

el-switch组件有change事件,跟el-radio、el-checkbox和el-select组件的change事件一样,传入一个val(改变之后的值)

4.3 开关组件控制单选按钮组和下拉框

通过在单选按钮组和下拉框上绑定一个disabled,如果开关的值为1,设置disabled为false,否则为true,以这样的方式控制单选按钮组和下拉框

相关文章

网友评论

    本文标题:Switch开关控制禁用启用单选按钮组和下拉框

    本文链接:https://www.haomeiwen.com/subject/espbwctx.html