在角度ui-grid中设置单个列定义

时间:2017-11-09 16:00:19

标签: angularjs ui-grid

我们说我有以下数据:

let data = [
  {name: 'bob', bornOn: 1510174615339},
  {name: 'mary', bornOn: 1510164615339}
]

如果我将其传递到ui-grid,我将获得2列。为了将纪元时间解析为人类可读的格式。我需要做这样的事情:

$scope.gridOptions.columnDefs = [
  {name: 'Name', field: 'name'},
  {name: 'Born On', field: 'bornOn', cellFilter: 'date:"yyyy-MM-dd\"'}
]

我希望能够做到这样的事情:

$scope.gridOptions.columnDefs = [
  {name: 'Born On', field: 'bornOn', cellFilter: 'date:"yyyy-MM-dd\"'}
]

但后来我失去了名字字段。

如果我没有提供任何列定义,我会收回所有物业。

这有点做作,但在我的实际项目中,我不得不提取具有不同属性的对象,但我不想在他们自己的列定义中手动设置这些不同的属性。我只想分配特定的自定义字段,例如纪元时间,但是一旦我设置了这些列定义,默认值就不会进入网格。

是否可以自定义单个列columnDef,但允许ui grid默认其余的属性列。

1 个答案:

答案 0 :(得分:1)

默认情况下,如果columnDefs数组为空,则ui-grid从具有此函数的数据生成columnDefs:

 /**
   * @ngdoc function
   * @name buildColumnDefsFromData
   * @methodOf ui.grid.class:Grid
   * @description Populates columnDefs from the provided data
   * @param {function(colDef, col, gridOptions)} rowBuilder function to be called
   */
  Grid.prototype.buildColumnDefsFromData = function (dataRows){
    this.options.columnDefs =  gridUtil.getColumnsFromData(dataRows, this.options.excludeProperties);
  }

您可以使用gridUtil.getColumnsFromData并自定义阵列中的单个列,然后再将其分配给gridOptions.columnDefs,或者您可以修改$ columnDefs个功能中的timeout

$timeout(function(){
 console.log($scope.gridOptions.columnDefs);
});