#vue.js #vuejs2 #vue-component #vuetify.js #vue-router
#vue.js #vuejs2 #vue-компонент #vuetify.js #vue-маршрутизатор
Вопрос:
У меня есть два компонента App.vue и ModalWindow.vue
Я пытаюсь открыть модальное окно (ModalWindow.vue) в родительском компоненте App.vue при нажатии кнопки с событием «toggle», которое вызывает функцию «toggleModal»
Но я не могу, пожалуйста, скажите мне, в чем моя ошибка
This.is мое приложение.vue
<button @toggle="toggleModal">
<svg class="user-nav__icon" >
<use xlink:href="@/img/sprite.svg#icon-chat"></use>
</svg>
</button>
<script>
import ModalWindow from '../UI/ModalWindow.vue'
export default {
components: {
ModalWindow
},
mixins: [ModalWindow],
methods: {
toggleModal() {
this.toggle();
}
}
}
</script>
И ЭТО МОЙ ModalWindow.vue
<template>
<template>
<div>
<transition name="fade">
<div class="modal">
<div class="modal-message">
<div class="modal-header">
<h2>Vue Modal</h2>
</div>
<div class="modal-body">
<p>Modals are so easy in Vue.js!</p>
</div>
</div>
</div>
</transition>
</div>
</template>
<script>
export default {
name: 'ModalWindow',
data() {
return {
show: false
}
},
methods: {
toggle() {
this.show = !this.show
}
}
}
</script>
Комментарии:
1. Вы должны опубликовать все содержимое файла vue, не нужно разделять на скрипт и содержимое html. Кроме того, я думаю, что scss не нуждается в публикации здесь
2. кажется, вы не используете
ModalWindow
in app.vue3. я отредактировал .. это не то mistake..it ошибка, которую я допустил здесь
4. пожалуйста, поделитесь, как вы используете
ModalWindow
in app.vue?
Ответ №1:
нет необходимости в $emit, поскольку вы нигде не прослушиваете отправленное событие. Я думаю, глядя на ваш вопрос, вашему требованию нужен механизм микширования для вызова метода переключения вашего modal.vue.
чуть ниже
components: {
ModalWindow
}
в вашем app.vue добавьте строку
mixins: [ModalWindow]
и добавьте строку ниже в свой метод toggleModal
this.toggle();
чуть ниже this.показать строку. Вы также можете удалить ModalWindow из объекта components, если микшины работают.
Комментарии:
1. удалось увидеть какие-либо ошибки? @JustinMoreyl просто опубликуйте свой обновленный код mixin здесь. Постараюсь вести вас оттуда
2. мне кажется, что здесь что-то не работает <div class=»modal» v-show=»show»>
3. да, я собирался это сказать. Можете ли вы просто прокомментировать основную логику вашего модального и просто попробовать открыть пустое диалоговое окно. Это поможет нам узнать, работает ли микширование
4. <div class=»modal»> <div class=»modal-message»> <div class=»modal-header»> <h2>Vue Modal</h2> </div> <div class=»modal-body»> <p> Модальности настолько просты в Vue.js!</p> </div> </div> </div>
5. экспорт по умолчанию { name: ‘ModalWindow’, data() { return { show: false } }, }