事件处理
事件处理
SunlightDatePicker 支持多种事件处理,包括选择变化、焦点、失焦、日历变化、下拉框显示/隐藏和面板切换事件。
基础事件处理
您可以监听日期选择器的各种事件,实现自定义的业务逻辑。
选择变化事件
change事件:当选择的值发生变化时触发
焦点与失焦事件
focus事件:日期选择器获得焦点时触发blur事件:日期选择器失去焦点时触发
日历与面板事件
calendar-change事件:当日历面板的日期发生变化时触发panel-change事件:当日期面板切换时触发
下拉框显示/隐藏事件
visible-change事件:当弹出框出现或隐藏时触发
文档说明
事件处理概述
SunlightDatePicker 支持多种事件,涵盖了选择、焦点、日历状态和面板切换等各种交互场景,方便开发者实现复杂的业务逻辑。
支持的事件列表
| 事件名 | 说明 | 触发时机 | 参数 |
|---|---|---|---|
| update:modelValue | 绑定值更新事件,用于双向数据绑定 | 选择值变化时 | val: string/number/Date/Array - 更新后的值 |
| change | 选择变化事件 | 选择值变化时 | val: string/number/Date/Array - 选择后的值 |
| focus | 焦点事件 | 日期选择器获得焦点时 | event: Event - 原生事件对象 |
| blur | 失焦事件 | 日期选择器失去焦点时 | event: Event - 原生事件对象 |
| calendar-change | 日历变化事件 | 日历面板的日期发生变化时 | val: string/number/Date/Array - 当前日历面板显示的日期 |
| visible-change | 下拉框显示/隐藏事件 | 弹出框出现或隐藏时 | val: boolean - 弹出框是否可见 |
| panel-change | 面板切换事件 | 日期面板切换时 | value: string/number/Date - 当前选中的值 mode: string - 当前面板模式 oldMode: string - 上一个面板模式 |
事件使用方式
SunlightDatePicker 组件支持两种事件绑定方式:直接通过 v-on 绑定和通过 eventFunction 配置项绑定。
1. 直接通过 v-on 绑定事件
vue
<template>
<SunlightDatePicker
v-model="dateValue"
:item="{
placeholder: '请选择日期',
type: 'date'
}"
@change="handleChange"
@focus="handleFocus"
@blur="handleBlur"
/>
</template>
<script setup>
import { ref } from 'vue';
import { SunlightDatePicker } from 'sunlight-ui';
const dateValue = ref('');
function handleChange(val) {
console.log('选择变化:', val);
}
function handleFocus(event) {
console.log('聚焦事件:', event);
}
function handleBlur(event) {
console.log('失焦事件:', event);
}
</script>2. 通过 eventFunction 配置项绑定事件
vue
<template>
<SunlightDatePicker
v-model="dateValue"
:item="{
placeholder: '通过 eventFunction 绑定事件',
type: 'date',
eventFunction: {
change: (val) => {
console.log('eventFunction - 选择变化:', val);
},
focus: (event) => {
console.log('eventFunction - 聚焦事件:', event);
},
blur: (event) => {
console.log('eventFunction - 失焦事件:', event);
}
}
}"
/>
</template>
<script setup>
import { ref } from 'vue';
import { SunlightDatePicker } from 'sunlight-ui';
const dateValue = ref('');
</script>3. 两种方式结合使用
直接绑定的事件和通过 eventFunction 配置的事件可以同时使用,都会被触发。
vue
<template>
<SunlightDatePicker
v-model="dateValue"
:item="{
placeholder: '两种方式结合使用',
type: 'date',
eventFunction: {
change: (val) => {
console.log('eventFunction - 选择变化:', val);
}
}
}"
@change="(val) => console.log('直接绑定 - 选择变化:', val)"
/>
</template>
<script setup>
import { ref } from 'vue';
import { SunlightDatePicker } from 'sunlight-ui';
const dateValue = ref('');
</script>