Laravel vue js 模态隐藏当前模态并使用 bootstrap 5 显示新模态

发布于 2025-01-09 08:01:38 字数 4483 浏览 4 评论 0原文

我的 create.vue中的 vue js 有 3 个组件,

create.vue
list-user.vue
modal-role.vue

我调用另外 2 个组件,

<template>
  <div>
    <modal-role></modal-role>
    <list-user></list-user>
  </div>
</template

这两个组件都是模态

modal-role.vue

<template>
    <div>
            <!-- Button trigger modal -->
        <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#modalRole">
            add members
        </button>

        <!-- Modal -->
        <div class="modal fade" id="modalRole" tabindex="-1" aria-labelledby="modalRoleLabel" aria-hidden="true">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="modalRoleLabel">Role</h5>
                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                    </div>

                    <div class="modal-body">
                        <ul class="list-group">
                            <li @click="selectRole(item)" data-bs-toggle="modal" data-bs-target="#modalUser" data-bs-dismiss="modal" class="list-group-item list-group-item-action" v-for="item in roles" :key="item.id"> {{ item.name }} </li>
                        </ul>
                    </div>

                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>

list-user.vue

<div class="modal fade" id="modalUser" tabindex="-1" aria-labelledby="modalUserLabel" aria-hidden="true">
            <div class="modal-dialog" v-if="role">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="modalUserLabel">Choose members as {{ role.name }} </h5>
                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @click="dismiss()"></button>
                    </div>

                    <div class="modal-body">
                        <ul class="list-group">
                            <li 
                                class="list-group-item list-group-item-action" 
                                v-for="item in users" :key="item.id"
                            > 
                                {{ item.name + ' ' + item.surname}} 
                            </li>
                        </ul>

                        <div class="row justify-content-center" v-if="!isLast">
                            <button class="btn btn-primary" @click="loadMore()">
                                View more
                            </button>
                        </div>
                    </div>

                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal" @click="dismiss()">Cancel</button>
                        <button type="button" class="btn btn-primary" @click="choose()" data-bs-dismiss="modal">Choose</button>
                    </div>
                </div>
            </div>
        </div>

所以在我的 create 中.vue 当我的 modal-vue 中有按钮来显示带有角色列表的模式时, 在 my modal-role.vue 中,我期望的是当我选择一个角色时,它会关闭 modal-role.vue 上的模式并显示 中的新模式code>list-user.role 但我收到错误:

app.js:14656 Uncaught TypeError: Illegal invocation
    at Object.findOne (app.js:14656:44)
    at Modal._showElement (app.js:16567:38)
    at app.js:16490:35
    at execute (app.js:13914:5)
    at app.js:16196:7
    at execute (app.js:13914:5)
    at HTMLDivElement.handler (app.js:13937:5)

如果尝试将模式放在 list-user.vuemodal-role.vue ,它可以工作,但是如果第二个模式关闭但我仍然有这两个模态之一的叠加背景

编辑

当我显示第一个模态时,我的元素中有两个模态背景。

I have 3 components in my vue js

create.vue
list-user.vue
modal-role.vue

in my create.vue i call the 2 other component,

<template>
  <div>
    <modal-role></modal-role>
    <list-user></list-user>
  </div>
</template

these 2 components are all modal

modal-role.vue

<template>
    <div>
            <!-- Button trigger modal -->
        <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#modalRole">
            add members
        </button>

        <!-- Modal -->
        <div class="modal fade" id="modalRole" tabindex="-1" aria-labelledby="modalRoleLabel" aria-hidden="true">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="modalRoleLabel">Role</h5>
                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                    </div>

                    <div class="modal-body">
                        <ul class="list-group">
                            <li @click="selectRole(item)" data-bs-toggle="modal" data-bs-target="#modalUser" data-bs-dismiss="modal" class="list-group-item list-group-item-action" v-for="item in roles" :key="item.id"> {{ item.name }} </li>
                        </ul>
                    </div>

                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>

list-user.vue

<div class="modal fade" id="modalUser" tabindex="-1" aria-labelledby="modalUserLabel" aria-hidden="true">
            <div class="modal-dialog" v-if="role">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="modalUserLabel">Choose members as {{ role.name }} </h5>
                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" @click="dismiss()"></button>
                    </div>

                    <div class="modal-body">
                        <ul class="list-group">
                            <li 
                                class="list-group-item list-group-item-action" 
                                v-for="item in users" :key="item.id"
                            > 
                                {{ item.name + ' ' + item.surname}} 
                            </li>
                        </ul>

                        <div class="row justify-content-center" v-if="!isLast">
                            <button class="btn btn-primary" @click="loadMore()">
                                View more
                            </button>
                        </div>
                    </div>

                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal" @click="dismiss()">Cancel</button>
                        <button type="button" class="btn btn-primary" @click="choose()" data-bs-dismiss="modal">Choose</button>
                    </div>
                </div>
            </div>
        </div>

So in my create.vue when i have button from my modal-vue to show a modal with list of role,
in my modal-role.vue what i expected is when i select one role, it dismiss the modal on modal-role.vue and show a new modal that is in list-user.role but I got an error:

app.js:14656 Uncaught TypeError: Illegal invocation
    at Object.findOne (app.js:14656:44)
    at Modal._showElement (app.js:16567:38)
    at app.js:16490:35
    at execute (app.js:13914:5)
    at app.js:16196:7
    at execute (app.js:13914:5)
    at HTMLDivElement.handler (app.js:13937:5)

and if tried to put the modal in list-user.vue to modal-role.vue, it work but if the second modal dismiss but i still have the overlay background from one of these 2 modals

EDIT

When i show the first modal, got 2 modal backdrop in my element.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我喜欢麦丽素 2025-01-16 08:01:38

我在这里遇到了问题,我在 list-user.vue 的模态对话框 div 中放置了一个 v-if ,所以我的模态没有安装的 div 对话框,然后模态引导程序无法调用它来显示,所以我移动了我的if 语句在我的模态内容中并且效果很好

I got the problem here, i put a v-if in my modal-dialog div in my list-user.vue, so my modal have no div dialog in mounted then modal bootstrap can't call it to show, so i move my if statement in my modal-content and it work well

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文