2
我已經這樣做了根據我的服務器返回的數據創建列數。我想檢查數組中的數據是否與列名匹配,如果是,則返回yes,否則返回no。DataTables rows.add(array).draw()被多次調用
function initTable(userJvmsArray) {
var collumnsCallbacks = [{
title: "Username",
data: "username"
}];
for (var i = 0; i < $scope.unique.length; i++) {
$('#nameColumn').after('<th>' + $scope.unique[i] + '</th>');
var jvm = $scope.unique[i];
var col = {
title: jvm,
data: function(data, type, row) {
var data2 = data;
var jvms = $scope.unique;
for (var k = 1; k < jvms.length; k++) {
console.log(jvms);
for (var j = 0; j < data2.myarray.length; j++) {
if (table.column(k).title() == data2.myarray[j].Name) {
console.log(table.column(k).title() + " = " + data2.myarray[j].Name + " YES");
return "yes";
} else {
console.log(table.column(k).title() + " = " + data2.myarray[j].Name + " NO");
return "no";
}
}
}
}
};
collumnsCallbacks.push(col);
$scope.columns = collumnsCallbacks;
}
$scope.myTable = $('#myTable').DataTable({
'paging': true,
"pageLength": 3,
'columns': collumnsCallbacks
});
問題是功能似乎運行超過一次,並錯誤地填充表格多,這是我的控制檯日誌:
["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
user1: myword = myword YES myctrl.controller.js:66
["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
user1: myword = myword YES myctrl.controller.js:66
["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
user11: myword = secondword NO myctrl.controller.js:69
["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
user11: myword = secondword NO myctrl.controller.js:69
["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
user1: myword = myword YES myctrl.controller.js:66
["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
user11: myword = secondword NO myctrl.controller.js:69
["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
user1: myword = myword YES myctrl.controller.js:66
["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
user11: myword = secondword NO myctrl.controller.js:69
["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
user1: myword = myword YES myctrl.controller.js:66
["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
user1: myword = myword YES myctrl.controller.js:66
["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
user11: myword = secondword NO myctrl.controller.js:69
["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
user11: myword = secondword NO
有沒有辦法讓它只被調用一次?或者解決這個問題的另一種方法?謝謝! – orange
@orange,目前還不清楚爲什麼你對'columns.data'使用函數。你是否想在某些條件下在單元格中顯示「是」和「否」?此外,我沒有看到在所使用的標題中使用的「rows.add(array).draw()」。 –
是的!這就是我想要的。 我在稍後調用draw。這段代碼位於一個名爲initTable的函數中,在此函數調用之後,我執行rows.add(array).draw()。 – orange