Мы можем использовать диалог для взаимодействия с пользователями. Они передают сообщения и позволяют выполнять над ними определенные действия. Vuetify предоставляет компонент v-dialog
для создания диалога. Давайте посмотрим, как мы можем использовать этот компонент на практике в этой статье.
В приведенном ниже коде мы создали диалог и кнопку красного цвета:
<template> <v-app> <div class="text-center"> <v-dialog v-model="dialog" width="500"> <template v-slot:activator="{ on, attrs }"> <v-btn v-bind="attrs" v-on="on" class="mt-2" color="red" dark> Delete </v-btn> </template>
<v-card> <v-card-title class="text-h5"> Delete file? </v-card-title>
<v-card-text> Do you really want to delete this file? </v-card-text>
<v-card-actions> <v-spacer></v-spacer> <v-btn text @click="dialog = false"> Cancel </v-btn> <v-btn color="red" text @click="dialog = false"> Delete </v-btn> </v-card-actions> </v-card> </v-dialog> </div> </v-app> </template>
<script> export default { name: 'App', data: () => ({ dialog: false, }), }; </script>
Мы поместили кнопку в слот activator
компонента v-dialog
. Этот слот предоставляет некоторые реквизиты — on
и attrs
, которые мы использовали для установки реквизитов и обработчиков событий кнопки. Мы используем карточку для создания тела диалога.
Диалог появляется при нажатии кнопки:
Использование реквизита «скрыть-наложение»
Диалоговое окно открывается с наложением, как мы видим на изображении выше. Мы можем скрыть это наложение, установив свойство hide-overlay
на true
:
<template> <v-app> <div class="text-center"> <v-dialog v-model="dialog" width="500" hide-overlay> <template v-slot:activator="{ on, attrs }"> <v-btn v-bind="attrs" v-on="on" class="mt-2" color="red" dark> Delete </v-btn> </template>
<v-card> <v-card-title class="text-h5"> Delete file? </v-card-title>
<v-card-text> Do you really want to delete this file? </v-card-text>
<v-card-actions> <v-spacer></v-spacer> <v-btn text @click="dialog = false"> Cancel </v-btn> <v-btn color="red" text @click="dialog = false"> Delete </v-btn> </v-card-actions> </v-card> </v-dialog> </div> </v-app> </template>
Это будет выглядеть так:
Украсьте с помощью Vuetify
Полное руководство по созданию элегантных веб-приложений с помощью платформы Vuetify Material Design.
Скачать бесплатную копию здесь!
Создание полноэкранных диалогов
Мы можем сделать так, чтобы диалог закрывал всю область просмотра страницы, установив свойство fullscreen
на true
:
<template> <v-app> <div class="text-center"> <v-dialog v-model="dialog" width="500" fullscreen> <template v-slot:activator="{ on, attrs }"> <v-btn v-bind="attrs" v-on="on" class="mt-2" color="red" dark> Delete </v-btn> </template>
<v-card> <v-card-title class="text-h5"> Delete file? </v-card-title>
<v-card-text> Do you really want to delete this file? </v-card-text>
<v-card-actions> <v-spacer></v-spacer> <v-btn text @click="dialog = false"> Cancel </v-btn> <v-btn color="red" text @click="dialog = false"> Delete </v-btn> </v-card-actions> </v-card> </v-dialog> </div> </v-app> </template> ...
Использование настраиваемых диалоговых переходов
Мы можем настроить переход, который диалог использует для отображения на экране, используя реквизит transition
. В приведенном ниже коде мы установили его на dialog-bottom-transition
, что заставит диалоговое окно скользить снизу при открытии:
<template> <v-app> <div class="text-center"> <v-dialog v-model="dialog" width="500" transition="dialog-bottom-transition" > <template v-slot:activator="{ on, attrs }"> <v-btn v-bind="attrs" v-on="on" class="mt-2" color="red" dark> Delete </v-btn> </template>
<v-card> <v-card-title class="text-h5"> Delete file? </v-card-title>
<v-card-text> Do you really want to delete this file? </v-card-text>
<v-card-actions> <v-spacer></v-spacer> <v-btn text @click="dialog = false"> Cancel </v-btn> <v-btn color="red" text @click="dialog = false"> Delete </v-btn> </v-card-actions> </v-card> </v-dialog> </div> </v-app> </template> ...
Если бы мы хотели, чтобы он скользил сверху, мы могли бы установить ту же опору на dialog-top-transition
:
<template> <v-app> <div class="text-center"> <v-dialog v-model="dialog" width="500" transition="dialog-bottom-transition" > <template v-slot:activator="{ on, attrs }"> <v-btn v-bind="attrs" v-on="on" class="mt-2" color="red" dark> Delete </v-btn> </template>
<v-card> <v-card-title class="text-h5"> Delete file? </v-card-title>
<v-card-text> Do you really want to delete this file? </v-card-text>
<v-card-actions> <v-spacer></v-spacer> <v-btn text @click="dialog = false"> Cancel </v-btn> <v-btn color="red" text @click="dialog = false"> Delete </v-btn> </v-card-actions> </v-card> </v-dialog> </div> </v-app> </template> ...
Как сделать диалоги постоянными
По умолчанию диалоговые окна Vuetify можно закрыть, щелкнув или нажав где-нибудь за его пределами. Если мы не хотим, чтобы это было так, мы можем установить свойство persistent
в значение true:
<template> <v-app> <div class="text-center"> <v-dialog v-model="dialog" width="500" persistent > <template v-slot:activator="{ on, attrs }"> <v-btn v-bind="attrs" v-on="on" class="mt-2" color="red" dark> Delete </v-btn> </template>
<v-card> <v-card-title class="text-h5"> Delete file? </v-card-title>
<v-card-text> Do you really want to delete this file? </v-card-text>
<v-card-actions> <v-spacer></v-spacer> <v-btn text @click="dialog = false"> Cancel </v-btn> <v-btn color="red" text @click="dialog = false"> Delete </v-btn> </v-card-actions> </v-card> </v-dialog> </div> </v-app> </template> ...
Краткое содержание
Vuetify предоставляет компонент v-dialog
для создания диалогов в пользовательском интерфейсе. Мы можем изменить определенные свойства этих диалогов, например, сделать их полноэкранными или изменить переход, который они использовали для отображения на экране.
Подпишитесь на нашу еженедельную рассылку, чтобы быть в курсе новых полезных материалов от нас!
Получить обновленную статью на codingbeautydev.com.