我正在使用jquery.dataTables.js版本1.10.0构建DataTable。我正在使用带有分页的服务器端处理,除了一件事以外,一切都运行得非常好。当我刷新浏览器(Chrome或IE 10)时,没有执行ajax代码来刷新表。因此,表也不令人耳目一新。如果我使用浏览器返回或转发,它可以完美运行。
我是否需要做一些特别的事情来强制DataTable在浏览器刷新时重新加载?
这是我的dataTable声明:
var dataTable = table.dataTable({
"retrieve": true,
"lengthMenu": [ [10, 30, 50, -1], [10, 30, 50, "All"] ],
"serverSide": true,
"paging": true,
"searching":false,
"pageLength": 30,
"columns": [ {
"sTitle": "col1"
}, {
"sTitle": "col2"
} ],
"dom": '<"top"if>rt<"bottom"lp><"clear">',
"ajax": {
// set up input parameters
"data": function(data) {
var length = table.dataTable().api().page.len();
var url = baseUrl + '/' + data.start + '/' + length;
table.dataTable().api().ajax.url(url);
draw = data.draw;
return {};
},
"url": baseUrl, //will be reset by data function
"dataFilter": function(data,type) {
var results = {};
.... //reformat the REST response for DataTable
return JSON.stringify(results);
},
"dataSrc": function(data) {
// hide length menu if records are less than minimum display
if (data.recordsTotal <= 10) {
$('#' + callType + relNcid + '_length').hide();
}
// hide page menu if all records fit on this page
if (data.recordsTotal <= table.dataTable().api().page.len()) {
$('#' + callType + relNcid + '_paginate').hide();
} else {
$('#' + callType + relNcid + '_paginate').show();
}
table.addClass('table table-condensed');
$anchorScroll();
return transformRelDataForTable(data.data);
}
}
});
此代码正在浏览器刷新时执行,但是,当我在“绘制”时放置断点。功能或&#39; dataFilter&#39;它永远不会破坏。
我正在使用 Jquery 1.11.0 AngularJS 1.2.13
答案 0 :(得分:0)
我发现并解决了这个问题。它是dataTables的外部。这是因为无声的失败导致访问该表。我的代码:
$('#' + relPosition).dataTable({.....});
静默失败,因为jquery引用的表尚不存在,因为它是ng-repeat子句的一部分,而Angular尚未在DOM上呈现该节点。在单步执行dataTable代码时,我注意到它将所有东西都短路了,因为表不存在(正确地说是这样),但是在这种情况下让dataTable代码抛出异常会非常有帮助。这样可以省去我几天的麻烦。