ag网格没有显示嵌套的json

ag-grid not showing nested json

本文关键字:嵌套 json 显示 网格 ag      更新时间:2023-09-26

我对ag网格有问题。我试着用ag网格绑定我的数据。因此,当我在系统中输入新成绩时,我会将ag网格扩展一列:

var newGrade = {headerName: "Grade", field: 'grades[' + indexOfNewGrade + '].value'};
this.$scope.columnDefs.push(newGrade);
this.$scope.gridOptions.api.setColumnDefs(this.$scope.columnDefs);
this.$scope.gridOptions.api.setRowData(this.selectedEventLog.getEntries());

我100%确信,例如:当我在ag网格中没有看到这个值时,this.selectedEventLog.getEntries()[0].grades[0].value返回1。另一方面,当我编写'grades['+indexOfNewGrade']'时,它运行良好,但它绑定到整个对象,而不是"value"属性。等级对象:

export class Grade {
  constructor(value) {
    this.value = value;
  }
}

不确定求值是否支持数组求值。

相反,您应该使用一个值获取器:

function buildValueGetter(index){
     return function(params){
        return params.data.grades[index].value;
     }
}
var newGrade = {headerName: "Grade", id: 'grades-'+indexOfNewGrade, 
    valueGetter:buildValueGetter(indexOfNewGrade)};

关于valueGetter的相关文件:https://www.ag-grid.com/javascript-grid-value-getters/index.php

为什么要将其作为字符串输入?我似乎无法理解你在做什么。我只想做field: grades[indexOfGrade].value.toString()。请注意缺少',因为您实际上想要获得存储在数组grades内的indexOfGrade中的特定Grade的值。之后,您获得value属性,并且只有在之后,您才将其设为字符串。

更新

我想我明白你想做的了。你想用值获取器表达式吗?

如果是这样的话,你的代码应该是这样的:

{
    headerName: "Grade", 
    field: 'newGrade' + indexOfNewGrade.toString(),
    valueGetter: 'data[' + indexOfNewGrade.toString() + '].value'
}