我想在Gridview中单击一行后显示模式,但是模式内容不会显示。
我的代码缺少什么或有什么问题?
在main.php中:
<?php
Modal::begin([
'header'=>'<h4>Update '. $this->title .'</h4>',
'id'=>'update-modal',
'size'=>'modal-md'
]);
echo "<div id='updateModalContent'></div>";
Modal::end();
?>
在index.php中:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
[
'attribute'=>'name',
'format'=>'raw',
'value'=>function ($model) {
return Html::a($model->name, ['/unit/unit/update', 'id'=>$model->id], ['class' => 'update-modal-link',
'data-toggle'=>"modal",
'data-target'=>"#update-modal",
]);
}
],
],
]); ?>
在main.js中:
$(function () {
$('.update-modal-link').click(function () {
$('#update-modal')
.modal('show')
.find('#updateModalContent')
.load($(this).attr('value'));
});
});
答案 0 :(得分:1)
您应该使用javascript或默认的data-toggle
和data-target
属性,您正试图通过2个源来加载它,而我怀疑您所面临的问题是它加载了模式并消失了即刻。
如果正确,请从GridView
列的锚链接中删除属性,并将其更新为以下内容。
[
'attribute' => 'name',
'format' => 'raw',
'value' => function ($model) {
return Html::a($model->name, ['/unit/unit/update', 'id' => $model->id], ['class' => 'update-modal-link']);
}
],
然后,您尝试为锚点分配value
属性,该属性无效。您需要将锚点的href
属性作为目标,以获取相对网址并加载模式内容。
将您的JavaScript代码更改为以下
$(function () {
$('.update-modal-link').click(function (e) {
e.preventDefault();
$('#update-modal')
.modal('show')
.find('#updateModalContent')
.load($(this).attr('href'));
});
});
希望这会有所帮助。