我们说我有以下数据:
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默认其余的属性列。
答案 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);
});