私はVue 2.0でシングルファイルコンポーネントアプローチを使用しています。私は3つのコンポーネントApp
(親)、AppHeader
、およびFormModal
を持っています。 AppHeader
およびFormModal
は、直接子のApp
とお互いの兄弟です。Vue.js 2.0でインポートされた兄弟コンポーネントの値を変更する適切な方法は何ですか?
AppHeader
のボタンをクリックすると、FormModal
の視認性を切り替える必要があります。私が持っている問題は、Vueの単方向データフローを理解することです。フォームの可視性を変更することを知らせるために、親に戻るイベント(App
)をAppHeader
からどのように渡すことができますか?
(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
ファイルは、私のすべてのテンプレートの親です。要約すると
(App.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>
、アプリケーションは親です。 2つの兄弟、AppHeader
とFormModal
があります。ボタンがAppHeader
でクリックされると、FormModal
の表示を切り替える必要があります。
私はまだVueの単方向データフローを十分に把握していませんが、このシナリオにどのようにアプローチするかはわかりません。
あなたの質問は不完全なようです。どのように実際にフォームのモーダルコンポーネントをレンダリングしますか? –
あなたは正しいです。デイビッドと私はただ気付いた - 私は適切な編集を行います。 – Robert
@DavidL完全な画像を表示するために投稿を編集しました。良いキャッチ。 – Robert