eCo*_*Evo 6 datatables jquery-datatables
我在DT v1.10下面有以下代码:
var oTable = $('#items')
.dataTable({
sDom: "<'row'<'col-md-4'l><'col-md-6'f>r>t<'row'<'col-md-4'i><'col-md-7'p>>",
oLanguage: {
sLengthMenu: "_MENU_ per page"
},
ajax: "/items",
bProcessing: true,
bServerSide: true,
aoColumnDefs: [
{
aTargets: [-1],
bSearchable: false,
bSortable: false
}
]
})
.on('click', '.btn-danger', function (e) {
if (confirm('Are you sure you want to delete SKU "' + $(this).data('sku') + '"?')) {
$.getJSON($(this).attr('href'), function (data) {
if ('success' in data) {
oTable.ajax.reload(null, false);
}
});
}
event.stopPropagation();
return false;
});
Run Code Online (Sandbox Code Playgroud)
当服务器响应成功时,它会尝试调用该行,oTable.ajax.reload(null, false);但我总是得到错误Uncaught TypeError: Cannot read property 'reload' of undefined
我在这做错了什么?
Art*_*iak 21
您正在使用旧的API:$().dataTable()(v1.9及更早版本),它仍可在DataTables v1.10中使用.旧的API返回jQuery对象,因此您应该使用.api()以便使用DataTable API方法:
oTable.api().ajax.reload();
Run Code Online (Sandbox Code Playgroud)
新API通过以下方式返回: $().DataTable()
问:我收到一条错误消息,指出API方法不可用
A.:很可能您使用的是jQuery对象而不是DataTables API实例.表单$().dataTable()将返回一个jQuery对象,同时$().DataTable()返回一个DataTables API实例.有关详细信息,请参阅API文档.
需要注意的区别是很重要的
$( selector ).DataTable()和$( selector ).dataTable().前者返回DataTables API实例,后者返回jQueryJS对象.将一个api()方法添加到jQuery对象中,以便您可以轻松访问API,但jQuery对象可用于操作表节点,就像使用任何其他jQuery实例(例如使用addClass()等)一样.
作为phillip100答案的后续内容,您无需更改所有旧代码,也无需更改初始化方法以使用新API.您可以随时获取dataTables 1.10.x API:
...
if ('success' in data) {
//oTable.ajax.reload(null, false);
$('#items').DataTable().ajax.reload(null, false);
}
...
Run Code Online (Sandbox Code Playgroud)
也会非常好.jQuery dataTables检查是否已有dataTables实例$("#items"),因此不会有冗余.
| 归档时间: |
|
| 查看次数: |
16668 次 |
| 最近记录: |