Element Plus предоставляет широкий набор компонентов, каждый из которых генерирует собственные события для взаимодействия с пользователем. Понимание событий и их сигнатур критично для построения реактивного интерфейса и корректного управления состоянием компонентов.
Регистрация событий через директиву v-on или
сокращение @ События компонентов Element Plus
обрабатываются стандартным способом Vue 3:
<el-button @click="handleClick">Нажми меня</el-button>
<script>
export default {
methods: {
handleClick(event) {
console.log('Кнопка нажата', event);
}
}
}
</script>
Здесь click — это событие компонента
el-button. Оно передает объект события DOM как первый
аргумент.
События могут передавать специфические аргументы
Многие компоненты Element Plus отправляют не просто объект события, а
набор данных, характерных для компонента. Например,
el-select передает выбранное значение:
<el-select v-model="value" @change="handleChange">
<el-option label="Option 1" value="1"></el-option>
<el-option label="Option 2" value="2"></el-option>
</el-select>
<script>
export default {
data() {
return { value: '' };
},
methods: {
handleChange(selectedValue) {
console.log('Выбрано значение', selectedValue);
}
}
}
</script>
В этом случае сигнатура события change
— (value: any) => void.
input: используется для
синхронизации с v-model. Событие отправляет новое значение
компонента. Пример:
<el-input v-model="text" @input="onInput"></el-input>
methods: {
onInput(newValue) {
console.log('Новое значение input:', newValue);
}
}focus и blur: передают
объект события DOM. Полезны для управления состоянием фокуса.
Select / Dropdown / Cascader Основные события:
change — значение изменилось. Сигнатура:
(value) => voidvisible-change — изменение состояния раскрытия списка.
Сигнатура: (visible: boolean) => voidremove-tag (только для multiple select) — удаление
тега. Сигнатура: (removedValue) => voidCheckbox / Radio / Switch
change — передает новое значение
(true/false для Switch, значение для Radio и
Checkbox).focus / blur — стандартные события
DOM.el-table)selection-change — изменение выбранных
строк. Сигнатура: (selectedRows: Array) => voidsort-change — сортировка столбцов.
Сигнатура: (sort: { column, prop, order }) => voidfilter-change — применение фильтров.
Сигнатура: (filters: Object) => voidrow-click / row-dblclick /
row-contextmenu — взаимодействие с конкретной
строкой. Сигнатуры: (row, column, event) => voidПример использования selection-change:
<el-table :data="tableData" @selection-change="onSelectionChange">
<el-table-column type="selection"></el-table-column>
<el-table-column prop="name" label="Имя"></el-table-column>
</el-table>
methods: {
onSelectionChange(selectedRows) {
console.log('Выбранные строки:', selectedRows);
}
}
validate — используется при проверке
формы (el-form). Сигнатура:
(valid: boolean, fields: Object) => voidsubmit / reset —
перехватывают отправку и сброс формы.Пример:
<el-form :model="form" @submit.prevent="onSubmit">
<el-form-item label="Имя">
<el-input v-model="form.name"></el-input>
</el-form-item>
</el-form>
methods: {
onSubmit() {
this.$refs.form.validate((valid) => {
if (valid) console.log('Форма валидна');
else console.log('Ошибки в форме');
});
}
}
Dialog (el-dialog)
open / opened — модальное окно открылось.
Сигнатура: () => voidclose / closed — окно закрыто.before-close — перехватывает попытку закрытия,
позволяет отменить. Сигнатура:
(done: Function) => voidTooltip / Popover / Dropdown
show / hide — изменение видимости.visible-change — передает булево значение
видимости.Upload (el-upload)
change — изменение списка файлов.
(file, fileList) => voidsuccess — успешная загрузка файла.
(response, file, fileList) => voiderror — ошибка загрузки.
(err, file, fileList) => voidremove — удаление файла из списка.
(file, fileList) => voidProgress (el-progress)
finish — прогресс достиг 100%.
(percentage: number) => void.stop, .prevent) для управления поведением
DOM-событий.Понимание и корректное использование событий Element Plus позволяет создавать динамичные и отзывчивые интерфейсы, где каждый компонент взаимодействует с данными и другими элементами приложения без лишней сложности.