如何将 Bootstrap 模式与 Spring Boot Thymeleaf 列表一起使用?
How to use Bootstrap Modals with Spring Boot Thymeleaf List?
我列出了我的用户。它运行完美,每个用户都有自己的 Bootstrap 卡。但是,当我单击“更多”以触发模态时,每个“更多”按钮都会给出相同的模态,即用户 #1 的弹出窗口 window。所以无论哪个用户的数据让我感兴趣,它总是显示相同的 Modal。我希望它能正常工作,这样每当我点击更多按钮时,window 就会弹出该用户的数据。
<div th:each="user : ${listUsers}" class="card mb-3">
<div class="row g-0">
<!-- <div class="col-md-3">
<img src="/images/noimage2.png" alt="...">
</div>-->
<div class="col-md-12">
<div class="card-body">
<h3 class="card-title"
th:text="${user.name}">Name</h3>
<!-- Button trigger modal -->
<button type="button" class="btn btn-secondary btn-sm"
data-bs-toggle="modal" data-bs-target="#exampleModal">
<i class="fas fa-address-card"></i> More
</button>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1"
aria-labelledby="exampleModalLabel" aria-hidden="true">
<div
class="modal-dialog modal-dialog-scrollable modal-lg modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel"
th:text="${user.name}">Modal title</h5>
<button type="button" class="btn-close"
data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<span class="d-inline"
th:text="${user.address}"></span> | <span
th:text="${user.phoneNumber}"></span> | <span
th:text="${user.email}">email</span>
</div>
<p class="card-body"
th:text="${user.description}"></p>
</div>
<div class="modal-footer"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<p>
</div>
您的所有按钮都针对 #exampleModal
-- 您可以在此处查看:data-bs-target="#exampleModal"
。如果你想让按钮工作,你需要给你的每个模式一个唯一的 id,然后用正确的按钮定位正确的模式。所以...
将 status variable 添加到循环中。
<div th:each="user, status : ${listUsers}" class="card mb-3">
使用 ${status.index}
变量为您的目标创建唯一 ID:
<button type="button" class="btn btn-secondary btn-sm"
data-bs-toggle="modal" th:data-bs-target="|#userModal${status.index}|">
<i class="fas fa-address-card"></i> More
</button>
使用 ${status.index}
变量为您的模态框创建唯一 ID:
<div class="modal fade" th:id="|#userModal${status.index}|" tabindex="-1"
aria-labelledby="exampleModalLabel" aria-hidden="true">
我列出了我的用户。它运行完美,每个用户都有自己的 Bootstrap 卡。但是,当我单击“更多”以触发模态时,每个“更多”按钮都会给出相同的模态,即用户 #1 的弹出窗口 window。所以无论哪个用户的数据让我感兴趣,它总是显示相同的 Modal。我希望它能正常工作,这样每当我点击更多按钮时,window 就会弹出该用户的数据。
<div th:each="user : ${listUsers}" class="card mb-3">
<div class="row g-0">
<!-- <div class="col-md-3">
<img src="/images/noimage2.png" alt="...">
</div>-->
<div class="col-md-12">
<div class="card-body">
<h3 class="card-title"
th:text="${user.name}">Name</h3>
<!-- Button trigger modal -->
<button type="button" class="btn btn-secondary btn-sm"
data-bs-toggle="modal" data-bs-target="#exampleModal">
<i class="fas fa-address-card"></i> More
</button>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1"
aria-labelledby="exampleModalLabel" aria-hidden="true">
<div
class="modal-dialog modal-dialog-scrollable modal-lg modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel"
th:text="${user.name}">Modal title</h5>
<button type="button" class="btn-close"
data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<span class="d-inline"
th:text="${user.address}"></span> | <span
th:text="${user.phoneNumber}"></span> | <span
th:text="${user.email}">email</span>
</div>
<p class="card-body"
th:text="${user.description}"></p>
</div>
<div class="modal-footer"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<p>
</div>
您的所有按钮都针对 #exampleModal
-- 您可以在此处查看:data-bs-target="#exampleModal"
。如果你想让按钮工作,你需要给你的每个模式一个唯一的 id,然后用正确的按钮定位正确的模式。所以...
将 status variable 添加到循环中。
<div th:each="user, status : ${listUsers}" class="card mb-3">
使用
${status.index}
变量为您的目标创建唯一 ID:<button type="button" class="btn btn-secondary btn-sm" data-bs-toggle="modal" th:data-bs-target="|#userModal${status.index}|"> <i class="fas fa-address-card"></i> More </button>
使用
${status.index}
变量为您的模态框创建唯一 ID:<div class="modal fade" th:id="|#userModal${status.index}|" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">