Похоже, не обрабатывать вещи в определенном порядке Как видите ... я перебираю строки, затем столбцы .. затем устанавливаю columnDefs.
Я не писал это, просто взял это на себя и пытался выяснить, что происходит.
Проблема: он перебирает все строки и все столбцы, а затем обрабатывает columnDefs. Что выглядит правильно, так как обрабатывает их только один раз. Я могу видеть это, наблюдая за console.logs. В gridOptions я мог установить только console.log в секции cellClass, так что я предполагаю, что когда его обработают?
После того, как он просматривает все строки / столбцы, он выглядит так, как будто он обрабатывает columnDef для каждой строки (я вижу это с console.logs в cellClass). Когда он попадает в columnDefs, он делает это не в том же порядке. В моем случае я вижу, что он проходит через id, first, second и третьего - но он не регистрирует обработку четвертого, jump, здесь или сейчас. Он назначает цвет для последней строки и каким-то образом задает этот цвет для всего столбца четвертого (хотя я никогда не вижу его в журнале). В конечном итоге все отображается на экране.
что странно Конечно, я могу видеть это только через cellClass console.log - так что, может быть, это не обрабатывается в правильном порядке?
var localColors = [
"red",
"green",
"orange",
"yellow",
"blue",
"lightblue",
"darkred"
]
let colNames = []
data.forEach((row) => {
var colorIndex = Math.floor(Math.random() * localColors.length);
console.log("inside row");
let rowVal = [];
for(let colName in row) {
console.log("inside col:"+colName);
if ((!colNames.includes(colName)) && (colName !== "_links")) {
$scope.gridOptions.columnDefs.push({
name: colName, cellClass: function(grid,row,col,rowRenderIndex,colRenderIndex) {
let val = grid.getCellValue(row,col);
console.log("inside gridOptions-colName:"+colName);
if (colName=='first') {
console.log("inside first:");
if (!rowVal.includes(val)) {
colorIndex = Math.floor(Math.random() * localColors.length);
rowVal = [];
}
rowVal.push(val);
return localColors[colorIndex];
}
if (colName=='second') {
console.log("inside second:");
rowVal.push(val);
return localColors[colorIndex];
}
if (colName=='third') {
console.log("inside third:");
rowVal.push(val);
return localColors[colorIndex];
}
if (colName=='fourth') {
console.log("inside fourth:");
rowVal.push(val);
return localColors[colorIndex];
}
}
colNames.push(colName);
}
}
//print out colNames set to columnDefs
let myCols = []
myCols = $scope.gridOptions.columnDefs;
console.log("COLNAMES in gridOptions:"+JSON.stringify(myCols));
});
Вот мой фактический вывод:
![Actual Output](https://i.stack.imgur.com/I9Ltz.png)
Вот мой ожидаемый результат:
![Desired Output](https://i.stack.imgur.com/P3FNc.png)
Если я уберу 4-ую колонку из цвета, вещи будут работать:
![Remove 4th from color](https://i.stack.imgur.com/4PR81.png)
Однако, если я добавлю 5-й столбец к цвету, 4-й и 5-й никогда не будут загружаться как другие:
![add 5th column](https://i.stack.imgur.com/qydCw.png)
Есть мысли? Спасибо!