我在 Vue 2.0 中使用单文件组件方法。我有 3 个组件App
(父级)AppHeader
、 和FormModal
. AppHeader
并且FormModal
是彼此的直系子女App
和兄弟姐妹。
目标是当AppHeader
单击按钮时,FormModal
应切换可见性。我遇到的问题是理解 Vue 的单向数据流。如何将事件传递回父 ( App
) fromAppHeader
以使其知道改变表单的可见性?
(AppHeader.vue)
<template>
<header>
<div class="app-header">
<h1 class="app-title">Sample Header</h1>
<a class="link-right" v-on:click="toggleModal()" href="#">
<i class="fa fa-pencil-square-o"></i>
</a>
</div>
</header>
</template>
<script>
import FormModal from "./FormModal.vue";
export default {
name : "AppHeader",
props : ['visible'],
methods : {
toggleModal () {
this.visible = !this.visible;
}
},
components : {
FormModal
}
}
</script>
(FormModal.vue)
<template>
<div class = "form-content" v-if="visible">
<!-- Some form markup -->
</div>
</template>
<script>
export default {
name : "FormModal",
props : ['visible']
//Also have data, methods, and computed here, but they aren't relevant to the example.
}
</script>
在这个例子中,我确实搞砸了道具的概念。我对导入模板时使用道具的正确方法感到非常困惑。
编辑:
原谅我,这是我使用 Vue 的第一天。我最初遗漏了一条非常重要的信息,即我的App.vue
文件,它是我所有模板的父级。
(应用程序.vue)
<template>
<div class="app">
<AppHeader></AppHeader>
<FormModal></FormModal>
</div>
</template>
<script>
import AppHeader from "./AppHeader.vue";
import Compose from "./FormModal.vue";
export default {
data () {
return {
views : [AppHeader, FormModal]
}
},
components : {
AppHeader,
FormModal
}
}
</script>
总之,App 是父级。有2个兄弟姐妹,AppHeader
和FormModal
。当在 中单击按钮时AppHeader
,FormModal
应切换 的可见性。
我还没有很好地掌握 Vue 的单向数据流,我不确定如何处理这种情况。