vue.js - 如何将属性从父级传递给子级并返回给父级和子级?
问题描述
openmyOverlay
触发按钮单击“myComponent .
isMyOverlayOpen is set to false. Button click triggers
openmyOverlay .
openmyOverlay changes
isOverlayOpened to true and passes to
myOverlay .
myOverlay has
isOverlayOpened prop and
overlayOpen data.
isOverlayOpened is being watched. Which changes
this.overlayOpen”为真。单击关闭覆盖。但是当我再次单击按钮时,覆盖不会打开。
<template>
<button
@click="openmyOverlay"
>
<myOverlay :isOverlayOpened="isMyOverlayOpen" />
</button>
</template>
<script>
import myOverlay from "./myOverlay.vue";
export default {
name: "my",
props: {
},
components: {
myOverlay,
},
data() {
return {
isMyOverlayOpen: false,
};
},
methods: {
openmyOverlay() {
this.isMyOverlayOpen = true;
},
},
};
</script>
myOverlay
<template>
<Modal
v-if="overlayOpen"
@triggerCloseOverylayInModal="closeModalOverlay"
:overlayOpen="overlayOpen"
/>
</template>
<script>
import Modal from "......./modal";
export default {
name: "myOverlay",
components: {
Modal,
},
props: {
isOverlayOpened: Boolean,
},
data() {
return {
overlayOpen: false,
};
},
methods: {
openModalOverlay() {
this.overlayOpen = true;
},
closeModalOverlay() {
this.overlayOpen = false;
},
},
watch: {
isOverlayOpened() {
this.openModalOverlay();
this.isOverlayOpened = false;
},
},
};
</script>
解决方案
您应该使用事件从孩子到父母进行交流。
methods: {
openModalOverlay() {
this.overlayOpen = true;
this.$emit('open');
},
closeModalOverlay() {
this.overlayOpen = false;
this.$emit('close');
},
},
然后在你的父母:
<myOverlay @close="isMyOverlayOpen=false" @open="openmyOverlay" overlayOpened="isMyOverlayOpen" />
推荐阅读
- aws-api-gateway - 如何防止 CDK 为新域名创建默认基本路径映射
- c++ - 我无法让我的向量显示其内容 C++
- java - Apache Beam 的 BigQueryIO (Java):无法将 TIMESTAMP 字段写入 BigQuery——fastxml.jackson 异常“类型不支持”
- python - 过滤 pyspark DataFrame 时出错
- twilio - 多
在出站呼叫时,响应显示“Digits=timeout”,呼叫提前断开 - arrays - 如何通过 str 遍历并将每个标记分配给作为全局变量的数组
- flutter - 我有清单
我需要转换 ApplicationMeta 类型 - php - 找不到类“App\Http\Controllers\User”
- python - 绘制 Pytorch 回归问题的预测结果和实际结果
- r - 使用 RSelenium 在 Windows 和 Mac 上进行网络抓取