Ionic Vue Modal 两次显示内容
Ionic Vue Modal shows content twice
在 Ionic Vue 应用程序中,我试图在模式中显示一些简单的内容。但是内容总是显示两次。如果我使用离子页面 (https://ionicframework.com/docs/api/modal) 中的示例,也会发生同样的情况:
模态内容组件:
<template>
<div>
<ion-header>
<ion-toolbar>
<ion-title>{{ title }}</ion-title>
</ion-toolbar>
</ion-header>
<ion-content class="ion-padding">
{{ content }}
</ion-content>
</div>
</template>
<script>
import { IonContent, IonHeader, IonTitle, IonToolbar } from '@ionic/vue';
import { defineComponent } from 'vue';
export default defineComponent({
name: 'Modal',
props: {
title: { type: String, default: 'Super Modal' },
},
data() {
return {
content: 'Content',
}
},
components: { IonContent, IonHeader, IonTitle, IonToolbar }
});
</script>
使用模态的组件:
<template>
<ion-page>
<ion-content class="ion-padding">
<ion-button @click="openModal">Open Modal</ion-button>
</ion-content>
</ion-page>
</template>
<script>
import { IonButton, IonContent, IonPage, modalController } from "@ionic/vue";
import Modal from "../components/ItemModal.vue";
export default {
components: { IonButton, IonContent, IonPage },
methods: {
async openModal() {
const modal = await modalController.create({
component: Modal,
cssClass: "my-custom-class",
componentProps: {
data: {
content: "New Content",
},
propsData: {
title: "New title",
},
},
});
return modal.present();
},
},
};
</script>
有趣的是,模式的内容组件显示了两次。
此外,道具和数据不会传递到模态内容组件。
在 Vue Ionic 中使用模态时,我是否遗漏了一些基本的东西?
原来我的模板中有两个 ion-app
实例。幸运的是,Ionic 论坛指出了这一点(不幸的是 post 被删除了)。
For some context, we use ion-app to create your modal content inside of the Vue app context. Then, we use Vue’s Teleport functionality to render the modal content inside of ion-modal. Since you had two instances of ion-app, your modal content was being created and teleported twice.
在 Ionic Vue 应用程序中,我试图在模式中显示一些简单的内容。但是内容总是显示两次。如果我使用离子页面 (https://ionicframework.com/docs/api/modal) 中的示例,也会发生同样的情况:
模态内容组件:
<template>
<div>
<ion-header>
<ion-toolbar>
<ion-title>{{ title }}</ion-title>
</ion-toolbar>
</ion-header>
<ion-content class="ion-padding">
{{ content }}
</ion-content>
</div>
</template>
<script>
import { IonContent, IonHeader, IonTitle, IonToolbar } from '@ionic/vue';
import { defineComponent } from 'vue';
export default defineComponent({
name: 'Modal',
props: {
title: { type: String, default: 'Super Modal' },
},
data() {
return {
content: 'Content',
}
},
components: { IonContent, IonHeader, IonTitle, IonToolbar }
});
</script>
使用模态的组件:
<template>
<ion-page>
<ion-content class="ion-padding">
<ion-button @click="openModal">Open Modal</ion-button>
</ion-content>
</ion-page>
</template>
<script>
import { IonButton, IonContent, IonPage, modalController } from "@ionic/vue";
import Modal from "../components/ItemModal.vue";
export default {
components: { IonButton, IonContent, IonPage },
methods: {
async openModal() {
const modal = await modalController.create({
component: Modal,
cssClass: "my-custom-class",
componentProps: {
data: {
content: "New Content",
},
propsData: {
title: "New title",
},
},
});
return modal.present();
},
},
};
</script>
有趣的是,模式的内容组件显示了两次。
此外,道具和数据不会传递到模态内容组件。
在 Vue Ionic 中使用模态时,我是否遗漏了一些基本的东西?
原来我的模板中有两个 ion-app
实例。幸运的是,Ionic 论坛指出了这一点(不幸的是 post 被删除了)。
For some context, we use ion-app to create your modal content inside of the Vue app context. Then, we use Vue’s Teleport functionality to render the modal content inside of ion-modal. Since you had two instances of ion-app, your modal content was being created and teleported twice.