ag-grid没有显示嵌套的json

时间:2016-05-09 19:41:44

标签: javascript angularjs ecmascript-6 ag-grid

我有ag-grid的问题。我试图用ag-grid绑定我的数据。因此,当我在系统中输入新等级时,我将ag-grid扩展为一列:

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%确定例如:this.selectedEventLog.getEntries()[0].grades[0].value当我在ag-grid中没有看到这个值时返回1。另一方面,当我写'grades['+indexOfNewGrade']'时,它工作正常,但它绑定到整个对象而不是'值'属性。 成绩对象:

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

2 个答案:

答案 0 :(得分:0)

为什么要将其作为字符串输入?我似乎无法掌握你正在做的事情。我只想做field: grades[indexOfGrade].value.toString()。请注意缺少',因为您实际上希望获得存储在数组Grade内的indexOfGrade处的特定grades的值。然后,您获得value属性,只有才能使其成为字符串。

<强> 更新

我想我得到了你想做的事。您是否尝试使用value getter expressions

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

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

答案 1 :(得分:0)

不确定评估是否支持数组评估。

相反,你应该使用值getter:

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