el-segmented 是 Element Plus 框架中的分段控制器组件,用于在多个选项之间进行切换。它常用于筛选条件、选项选择等场景。
一。 el-segmented 属性详解
-
model-value / v-model:
- 类型:
String | Number | Boolean - 用途: 绑定的值。
- 类型:
-
options:
- 类型:
Array<Object> - 用途: 选项列表。
- 默认值:
[]
- 类型:
-
size:
- 类型:
String - 用途: 控制器的大小,可选值为
large、medium、small、mini。 - 默认值:
medium
- 类型:
-
disabled:
- 类型:
Boolean - 用途: 是否禁用控制器。
- 默认值:
false
- 类型:
-
name:
- 类型:
String - 用途: 原生属性,用于表单提交。
- 类型:
-
border:
- 类型:
Boolean - 用途: 是否显示边框。
- 默认值:
true
- 类型:
-
fill:
- 类型:
String - 用途: 填充颜色。
- 类型:
-
text-color:
- 类型:
String - 用途: 文字颜色。
- 类型:
-
disabled-text-color:
- 类型:
String - 用途: 禁用状态的文字颜色。
- 类型:
二。 el-segmented 事件详解
-
update:model-value:
- 事件名称:
update:model-value - 用途: 当绑定值发生变化时触发。
- 参数: 新的绑定值。
- 事件名称:
-
change:
- 事件名称:
change - 用途: 当选项改变时触发。
- 参数: 新的绑定值。
- 事件名称:
三。 el-segmented 插槽详解
-
default:
- 插槽名称:
default - 用途: 自定义选项内容。
- 插槽名称:
四。示例代码
<template>
<div>
<h2>Segmented 分段控制器示例</h2>
<!-- 基本用法 -->
<el-segmented v-model="selectedOption" :options="options" @change="handleChange" />
<!-- 自定义大小 -->
<el-segmented v-model="selectedOption" :options="options" size="large" />
<!-- 禁用状态 -->
<el-segmented v-model="selectedOption" :options="options" disabled />
<!-- 自定义样式 -->
<el-segmented v-model="selectedOption" :options="options" fill="#409EFF" text-color="white" disabled-text-color="#999" />
<!-- 自定义选项内容 -->
<el-segmented v-model="selectedOption" :options="optionsWithSlots">
<template #default="{ option }">
<span>{{ option.label }} <i class="el-icon-check"></i></span>
</template>
</el-segmented>
</div>
</template>
<script setup>
import { ref } from 'vue'
import { ElSegmented } from 'element-plus'
const selectedOption = ref('option1')
const options = [
{ label: '选项一', value: 'option1' },
{ label: '选项二', value: 'option2' },
{ label: '选项三', value: 'option3' }
]
const optionsWithSlots = [
{ label: '选项一', value: 'option1' },
{ label: '选项二', value: 'option2' },
{ label: '选项三', value: 'option3' }
]
const handleChange = (value) => {
console.log('选项改变:', value)
}
</script>
五,代码解释
-
基本用法:
- 使用
el-segmented组件并设置v-model和options属性,绑定change事件。 -
<el-segmented v-model="selectedOption" :options="options" @change="handleChange" />
- 使用
-
自定义大小:
- 使用
size属性设置控制器的大小。 -
<el-segmented v-model="selectedOption" :options="options" size="large" />
- 使用
-
禁用状态:
- 使用
disabled属性设置控制器的禁用状态。 -
<el-segmented v-model="selectedOption" :options="options" disabled />
- 使用
-
自定义样式:
- 使用
fill、text-color和disabled-text-color属性设置控制器的样式。 -
<el-segmented v-model="selectedOption" :options="options" fill="#409EFF" text-color="white" disabled-text-color="#999" />
- 使用
-
自定义选项内容:
- 使用默认插槽自定义选项内容。
-
<el-segmented v-model="selectedOption" :options="optionsWithSlots"> <template #default="{ option }"> <span>{{ option.label }} <i class="el-icon-check"></i></span> </template> </el-segmented>
六。 数据和方法
-
数据绑定:
- 定义
selectedOption变量,用于绑定分段控制器的值。 -
const selectedOption = ref('option1')
- 定义
-
选项列表:
- 定义
options和optionsWithSlots数组,包含选项的标签和值。 -
const options = [ { label: '选项一', value: 'option1' }, { label: '选项二', value: 'option2' }, { label: '选项三', value: 'option3' } ] const optionsWithSlots = [ { label: '选项一', value: 'option1' }, { label: '选项二', value: 'option2' }, { label: '选项三', value: 'option3' } ]
- 定义
-
选项改变事件:
- 定义
handleChange方法,处理选项改变时的逻辑。 -
const handleChange = (value) => { console.log('选项改变:', value) }
- 定义
自定义样式
-
自定义分段控制器样式:
- 使用
<style scoped>自定义分段控制器的样式。 -
.el-segmented { margin-bottom: 20px; }
- 使用