Почему мой bootstrap модальный компонент не отображается в другом Vue компоненте - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть два однофайловых компонента, один для модального тела, а другой - список карт, которые используют это и динамически загружают значения в этом.

Вот imageModal.vue, в основном шаблон bootstrap.

<template>
        <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
            aria-hidden="true">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
                        <button type="button" class="close" @click.prevent="close">
                            <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                    <div class="modal-body">
                        ...
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" @click="close">Close</button>
                        <button type="button" class="btn btn-primary">Save changes</button>
                    </div>
                </div>
            </div>
        </div>
</template>

<script>

import 'bootstrap'
import 'bootstrap/dist/css/bootstrap.min.css'

export default {
    name: 'imageModal',
    methods: {
        close() {
            this.$emit('close');
        }
    }
}
</script>

А вот компонент tile.vue, использующий его.

<template>
  <div class="container-fluid">
    <ul class="gallery justify-content-center list-group-flush">
      <li class="mb-1 pics" v-for="post in postsWithPreview" v-bind:key="post.data.id">
        <div class="card" @click.prevent="showModal">
          <img :src="post.data.preview.images[0].source.url.replace('amp;s', 's')" class="img-fluid" alt="">
        </div>
      </li>
    </ul>
    <imageModal v-if="modalVisible"/>
  </div>
</template>



<script>

  import 'bootstrap/dist/css/bootstrap.min.css'

  import imageModal from '@/components/imageModal.vue'

  const axios = require('axios')


  const baseURL = "https://www.reddit.com/r/wallpapers.json"
  export default {
    name: 'tile',
    props: {
      msg: String
    },
    data() {
      return {
        modalVisible: false,
        postObjList: []
      }
    },
    components: {
      imageModal,
    },
    created() {
      axios.get(baseURL)
        .then(response => {
          this.postObjList = response.data.data.children
          console.log(this.postObjList)
          console.log(this.postsWithPreview)
        })
    },
    methods: {
      showModal() {
        this.modalVisible = true
      },
      closeModal() {
        this.modalVisible = false
      }
    }
  }
</script>

Но когда Я нажимаю на изображение карты, ничего не происходит. Что здесь происходит? И есть ли лучший способ сделать это? Я хочу сделать модальный динамический c, который будет содержать то же изображение, что и карта, по которой щелкают, а также некоторую дополнительную информацию о карте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...