我在laravel刀片上有下表,它使用x-editable来更新它的一些字段(注意,这是我的第一个PHP项目,所以如果有更好的方法可以做到这一点,请分享):
<table id="LinksTable" class="table table-bordered">
<thead>
<tr>
<th>Display</th>
<th>Link Display Name</th>
</tr>
</thead>
<tbody>
<?php $link_settings = Link_setting::whereNotNull('link_address')->get();?>
@foreach($link_settings as $link_setting)
<tr id="linkRow.{{$link_setting->id}}">
<td hidden="true">{{$link_setting->id}}</td>
<td><input id="linkD.{{$link_setting->id}}" name="is_displayed"
checked="{{$link_setting->is_displayed}}"
onChange="OnDisplayChange(this)" type="checkbox"></td>
<td><a href="#" class="listEdit" data-type="text"
data-column="display_name" data-url="./link_settings/update"
data-pk="{{$link_setting->id}}" data-title="change"
data-name="display_name">{{$link_setting->display_name}}</a>
</td>
</tr>
@endforeach
</tbody>
</table>
这在第一次渲染时很好,我可以编辑任何行上的显示名称,并正确更新数据库。 我的问题是我有一个“添加”按钮,可以在数据库中创建一个新对象。添加后,我需要重新加载表格以显示此条目。
function RefreshTable() {
$('.listEdit').editable("destroy");
$( "#linksTableMainDiv" ).load(location.href + " #LinksTable");
$('.listEdit').editable();
}
该表重新呈现正常,但是x-editable中断,没有我可以找到的错误。
答案 0 :(得分:0)
对于遇到这篇文章的人来说,我最后通过javascript重新加工,而不是重新加载表格。添加$(&#39; .listEdit&#39;)。editable(); table.appendChild(row)之后启用新行中的所有可编辑字段。为每个分配了data-pk = 0,并且作为更新控制器的一部分,返回了id。然后,我在可编辑函数成功时更新行的data-pk元素。