感谢您花时间看我的问题。
我有一个视图从我的数据库返回数据传递给控制器:
public function index()
{
$members = Member::orderBy('id', 'desc')->paginate(5);
return view('home', compact('members'));
}
我很满意这个观点:enter image description here
我用foreach循环将它传递给视图:
@foreach ($members as $member)
@include('partials.tableRow')
@endforeach
我的tableRow看起来像这样:
<a class="panel-block" onclick="refs.show.open()">
<span class="panel-icon">
<i class="fas fa-user" aria-hidden="true"></i>
</span>
<span class="column is-4">
{{ $member->name }}
</span>
<span class="panel-icon">
<i class="fas fa-at" aria-hidden="true"></i>
</span>
<span class="column is-5">
{{ $member->email }}
</span>
<span class="panel-icon">
<i class="fas fa-tshirt" aria-hidden="true"></i>
</span>
<span class="panel-button column is-1">
{{ $member->size }}
</span>
<span class="panel-icon">
<i class="fas fa-coins" aria-hidden="true"></i>
</span>
<span class="panel-button column is-2">
{{ $member->points}}
</span>
</a>
当我点击单个表格行时出现问题。我希望它显示连接到各个表行的信息的数据。在下面的图片中,我点击了第一行(我自己的名字),最后来了:wrong data display
您可能会看到它显示了最后一行的信息,并且每次单击一行时都会显示。当我进一步降低分页时,同样的问题。
我已经检查过是否将数据传递给视图,我这样做:data passed to view
我的showMember模态看起来像这样:
<div class="modal" id="show">
<div class="modal-background" onclick="refs.show.close()"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">{{ $member->name }}</p>
<button class="delete" onclick="refs.show.close()" aria-label="close"></button>
</header>
<section class="modal-card-body">
<!-- Content -->
<li class="panel-block">
<label class="column is-2"><b>E-mail</b></label>{{ $member->email }}
</li>
<li class="panel-block">
<label class="column is-2"><b>T-shirt</b></label>{{ $member->size }}
</li>
<li class="panel-block">
<label class="column is-2"><b>Points</b></label>{{ $member->points }}
</li>
<!-- Content -->
</section>
<footer class="modal-card-foot">
<button class="button is-outline" onclick="refs.show.close()">Luk</button>
</footer>
</div>
</div>
为了将特定数据传递给模态,我可能会丢失一些指向id或其他内容的链接,或者javascript函数的问题是除了最后一个之外没有获取传递的数据?
先感谢您
不能确切地告诉laravel,但是在(Yii2,Symfony)返回的视图被执行并且有点死亡。您可以仅使用javascript动态更改模态的内容,javascript将通过AJAX加载数据或从隐藏元素获取并加载到模态。
请显示你的refs.show.open()。
2018年8月13日更新
所以你可以在显示模态之前做这样的事情。
document.getElementById('modal-email').innerText = this.getElementsByClassName('member-email').item(0).innerText;
document.getElementById('modal-size').innerText = this.getElementsByClassName('member-size').item(0).innerText;
document.getElementById('modal-points').innerText = this.getElementsByClassName('member-points').item(0).innerText;
根据Bootstrap 4.1文档,您需要在单击后传递变量。
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@getbootstrap">Open modal for @getbootstrap</button>
然后在你js:
$('#exampleModal').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget) // Button that triggered the modal
var recipient = button.data('whatever')
// Extract info from data-* attributes
var modal = $(this)
modal.find('.modal-title').text('New message to ' + recipient)
modal.find('.modal-body input').val(recipient)
})
数据源是data- *属性,你不需要任何其他东西来关闭模态。