【问题标题】:Toggle modal dialog from parent component in VUE从 VUE 中的父组件切换模式对话框
【发布时间】:2020-07-20 19:35:35
【问题描述】:

所以我想从父组件切换我的模态对话框,我尝试了这里提到的每个步骤Stack Overflow Question about same Topic,但我的模态对话框仍然不可见,当我从 VUE 控制台看到它时它甚至具有未定义的值。并且在元素部分没有创建模态对话框 div。

MY MODAL DIALOG 未显示在网页的元素部分,但显示在 Vue 控制台中,具有未定义的 prop 值。但是单击效果正在父组件中起作用。当我点击 div 时,modal 设置为 true。


我的家长代码

<template>
    <div class="collection">
        <section class="section section-elements">
            <div class="elements-outer" @click="openModal">
                 <CopyComponent v-bind:item="item"/>                            
           </div>
        </section>
        <modal v-modal="modal"/>
    </div>
</template>
<script>
import Modal from "../components/Modal.vue";
export default {
    name: 'Collection',
    components: {
        Modal
    },
    data() {
        return {
            modal: false
        }
    },
    methods: {
        openModal() {
            this.modal = !this.modal;
        }
    }

}
</script>

我的子组件

<template>
<div v-if="value" class="modal">
    <div class="body">
        body
    </div>
    <div class="btn_cancel" @click="modalToggle">
        <i class="icon icon-cancel" />
    </div>
</div>
</template>

 <script>
   export default {
   name: "Modal",
   props: ["value"],
   methods: {
    modalToggle() {
      this.$emit("input", !this.value);
    }
  }
};
</script>

我错过了什么吗?

请帮忙,谢谢。

【问题讨论】:

标签: javascript vue.js vuejs2 vue-component vuex


【解决方案1】:

你在&lt;modal v-modal="modal"/&gt;中拼错了v-model,应该是&lt;modal v-model="modal"/&gt;

【讨论】:

  • 但是模态对话框仍然没有打开,它在检查元素下没有显示样式..只有内容在检查元素下可见
  • 这可能是您的 css 中的问题,请尝试从您的模态组件中删除 modal 类。我自己测试了你的代码,没有任何样式,一切正常。
  • 但如果没有模态类,我将无法继承引导程序默认样式和模态对话框的功能。我需要那门课
  • 你在使用 vue bootstrap 吗?因为我几乎可以肯定纯 css 引导程序不会按您的计划工作。
  • 试试 vue-bootstrap,它应该可以解决你的问题,而且你不需要自己构建每个组件。
【解决方案2】:

您的道具被称为value,因此您需要从父组件传递它,同时为切换模式分配事件。

<modal :value="modal" @toggle="modalToggle"/>

在你的孩子身上:

<template>
<div v-if="value" class="modal">
    <div class="body">
        body
    </div>
    <div class="btn_cancel" @click="modalToggle">
        <i class="icon icon-cancel" />
    </div>
</div>
</template>
<script>
   export default {
   name: "Modal",
   props: ["value"],
   methods: {
    modalToggle() {
      this.$emit("toggle");
    }
  }
}
</script>

【讨论】:

  • 第一个回复已经解决了问题...值在变化,点击效果正在工作,当我点击时正在创建div..但是由于模态类,模态对话框默认不显示。 .这就是为什么它没有出现,你知道如何解决它吗?
  • @gautam 使用vue-js-modal 怎么样?
  • 已经试过显示,不工作...不想使用额外的插件
  • 当你的数据和类显示中默认有modal: true 时会发生什么?
猜你喜欢
  • 2021-01-30
  • 2018-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-28
  • 2016-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多