我这样做是为了根据服务器返回的数据创建列数。我想检查数组中的数据是否与列名匹配,如果匹配则返回 yes,否则返回 no。
function initTable(userJvmsArray) {
var columnsCallbacks = [{
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";
}
}
}
}
};
columnsCallbacks.push(col);
$scope.columns = columnsCallbacks;
}
$scope.myTable = $('#myTable').DataTable({
'paging': true,
"pageLength": 3,
'columns': columnsCallbacks
});
问题是该函数似乎运行了多次并且错误地填充了表,这是我的控制台日志:
["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
由于 DataTables 的工作方式, 的函数会被执行多次。虽然还不清楚,但这个函数可能会被多次调用,因为 DataTables 会根据需要的不同数据类型调用它 - 类型检测、排序、过滤和显示(原因
type == 'type'
、
type == 'sort'
、
type == 'filter'
和
type == 'display'
) )。也可以调用它来设置单元格的数据(
set == 'set'
)。函数应定义如下,请参阅了解更多详细信息。
data: function(row, type, set, meta){ }
注意事项
columns.render
,它可以被视为 columns.data
的只读伴侣,并且不太复杂。
"yes"
或
"no"
值。我无法更正您的代码,因为不清楚您要做什么。