# CheckboxGroup 多选组

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

单选组组件功能相似,仅为多选功能

# 基础用法

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

<template>
  <div style="width: 300px">
    <ex-checkbox-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属性定义边框样式,设置minmax可定义勾选最小与最大数量

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

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

# 按钮样式

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

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

<script>
export default {
  data() {
    return {
      value: null,
      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-checkbox-group
      v-model="value"
      :options="options"
      label-key="name"
      value-key="id"
      align="center"
    />
  </div>
</template>

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

# 有禁用选项

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

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

<script>
export default {
  data() {
    return {
      value: null,
      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-checkbox-group
      v-model="value"
      :options="options"
      label-key="name"
      value-key="id"
      disabled
    />
  </div>
</template>

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

# 自定义模板

使用插槽自定义选项

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

<template>
  <div style="width: 300px">
    <ex-checkbox-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-checkbox-group>
    <div style="margin: 20px"></div>
    <ex-checkbox-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-checkbox-group>
  </div>
</template>

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

# Attributes

参数 说明 类型 可选值 默认值
value / v-model 绑定值 array
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
min 可被勾选的 checkbox 的最小数量 number
max 可被勾选的 checkbox 的最大数量 number
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}