# RadioGroup 单选组

基于el-radio (opens new window)二次封装的单选组组件。

el-radioel-radio-groupel-radio-button组件配置化为一体,一个组件便可实现不同的功能,其选择项配置类似 ZSelect,通过options实现不同选项配置。

# 基础用法

使用options属性定义选择项,并使用label-keyvalue-key属性来定义选项标签与值的标识键名

<template>
  <div style="width: 300px">
    <ex-radio-group v-model="value" :options="options" label-key="name" value-key="id" />
  </div>
</template>

<script>
export default {
  data() {
    return {
      value: 1,
      options: [
        {
          id: 1,
          name: '市桥'
        },
        {
          id: 2,
          name: '大石'
        },
        {
          id: 3,
          name: '汉溪长隆'
        }
      ]
    };
  }
};
</script>
Expand Copy

# 边框样式

设置border属性定义边框样式

<template>
  <div style="width: 300px">
    <ex-radio-group v-model="value" :options="options" label-key="name" value-key="id" border />
  </div>
</template>

<script>
export default {
  data() {
    return {
      value: 1,
      options: [
        {
          id: 1,
          name: '市桥'
        },
        {
          id: 2,
          name: '大石'
        },
        {
          id: 3,
          name: '汉溪长隆'
        }
      ]
    };
  }
};
</script>
Expand Copy

# 按钮样式

设置button属性定义边框样式,设置full属性可以将宽度铺满

<template>
  <div style="width: 300px">
    <ex-radio-group
      v-model="value"
      :options="options"
      label-key="name"
      value-key="id"
      button
      full
    />
  </div>
</template>

<script>
export default {
  data() {
    return {
      value: 1,
      options: [
        {
          id: 1,
          name: '市桥'
        },
        {
          id: 2,
          name: '大石'
        },
        {
          id: 3,
          name: '汉溪长隆'
        }
      ]
    };
  }
};
</script>
Expand Copy

# 对齐方式

通过设置 align 属性可以改变选项组位置,属性配置值参考css justify-content (opens new window)

<template>
  <div style="width: 300px">
    <ex-radio-group
      v-model="value"
      :options="options"
      label-key="name"
      value-key="id"
      align="center"
    />
  </div>
</template>

<script>
export default {
  data() {
    return {
      value: 1,
      options: [
        {
          id: 1,
          name: '市桥'
        },
        {
          id: 2,
          name: '大石'
        },
        {
          id: 3,
          name: '汉溪长隆'
        }
      ]
    };
  }
};
</script>
Expand Copy

# 有禁用选项

通过 disabled-method 属性设置禁选方法,返回一个 boolean 决定选项是否禁选

<template>
  <div style="width: 300px">
    <ex-radio-group
      v-model="value"
      :options="options"
      label-key="name"
      value-key="id"
      :disabled-method="isDisabled"
    />
  </div>
</template>

<script>
export default {
  data() {
    return {
      value: 1,
      options: [
        {
          id: 1,
          name: '市桥'
        },
        {
          id: 2,
          name: '大石',
          disabled: true
        },
        {
          id: 3,
          name: '汉溪长隆'
        }
      ]
    };
  },
  methods: {
    isDisabled(option) {
      return option.disabled;
    }
  }
};
</script>
Expand Copy

# 禁用状态

通过 disabled 属性指定是否禁用组件

<template>
  <div style="width: 300px">
    <ex-radio-group v-model="value" :options="options" label-key="name" value-key="id" disabled />
  </div>
</template>

<script>
export default {
  data() {
    return {
      value: 1,
      options: [
        {
          id: 1,
          name: '市桥'
        },
        {
          id: 2,
          name: '大石'
        },
        {
          id: 3,
          name: '汉溪长隆'
        }
      ]
    };
  }
};
</script>
Expand Copy

# 自定义模板

使用插槽自定义选项

使用option插槽自定义选项内容,使用参数option获取选项。可通过slots.option设置插槽名称

<template>
  <div style="width: 300px">
    <ex-radio-group v-model="value" :options="options" label-key="name" value-key="id">
      <template #option="{ option }">
        <span>{{ option.name }}</span>
        <span style="color: #8492a6; font-size: 13px">{{ option.key }}</span>
      </template>
    </ex-radio-group>
    <div style="margin: 20px"></div>
    <ex-radio-group
      v-model="value"
      :options="options"
      label-key="name"
      value-key="id"
      :slots="{ option: 'choice' }"
    >
      <template #choice="{ option }">
        <span style="color: #8492a6; font-size: 13px">{{ option.key }}</span>
        <span>{{ option.name }}</span>
      </template>
    </ex-radio-group>
  </div>
</template>

<script>
export default {
  data() {
    return {
      value: 1,
      options: [
        {
          id: 1,
          name: '市桥',
          key: 'SQ'
        },
        {
          id: 2,
          name: '大石',
          key: 'DS'
        },
        {
          id: 3,
          name: '汉溪长隆',
          key: 'HXCL'
        }
      ]
    };
  }
};
</script>
Expand Copy

# Attributes

参数 说明 类型 可选值 默认值
value / v-model 绑定值 boolean / string / number
align 对齐方式,配置值参考css justify-content (opens new window) string left, center, right... left
options 选项组 array []
label-key 选项的标签 key string label
value-key 选项的值 key string value
disabled-method 禁用选项的方法,返回是否禁用 function(option)
slots 修改插槽名,自定义插槽 object
slots.option 选项内容插槽名 string option
disabled 是否禁用 boolean false
size 单选框组尺寸,仅对按钮形式的 Radio 或带有边框的 Radio 有效 string medium/small/mini
text-color 按钮形式的 Radio 激活时的文本颜色 string #ffffff
fill 按钮形式的 Radio 激活时的填充色和边框色 string #409EFF
border 是否显示边框 boolean false
button 是否显示为按钮组 boolean false

# Events

事件名称 说明 回调参数
change 绑定值发生变化时触发 目前的选中值

# Slots

插槽的 name 可通过属性 slots 重命名

name 说明 参数
option 选项内容 {option,selected}