我正在使用新的Angular UI Grid(计划更换ng-grid)。 我的数据在表格中显示之前需要一些格式化。例如,我的服务器返回一个名为" status"的属性。作为一个数字,但我想把它显示为一个好名字。
如果status = 1显示" Todo",如果status = 2显示"执行"等
如何在UI Grid中完成?
答案 0 :(得分:5)
现在首选的方法是使用cellFilter,而不是自定义模板。自定义模板没问题,但是在升级时会增加工作量 - 您必须检查新功能是否需要修改模板。
教程中有一个合理的过滤器示例:http://ui-grid.info/docs/#/tutorial/201_editable
请注意性别列上的cellFilter: 'mapGender'
,以及教程中下面进一步定义的过滤器:
.filter('mapGender', function() {
var genderHash = {
1: 'male',
2: 'female'
};
return function(input) {
if (!input){
return '';
} else {
return genderHash[input];
}
};
})
答案 1 :(得分:2)
第一步,将cellTemplate添加到列中:
$scope.gridOptions.columnDefs = [
{field:'status', displayName: 'Status',cellTemplate: 'statusTemplate.html'}
];
模板文件应该如下所示(COL_FIELD是实际字段):
<div style="text-align: center">{{COL_FIELD==1 ? 'Todo' : 'Doing'"}}</div>
希望,你明白了! :)
答案 2 :(得分:1)
最简单的方法是使用CellTemplate和appScopeProvider:
vm.gridOptions = {
columnDefs: [
{
field: 'status',
cellTemplate: '<div>{{grid.appScope.formatStatus(row)}</div>'
}
],
appScopeProvider: {
formatStatus: function (row) {
return row.entity.status === 1 ? 'Todo' : 'Doing';
},
}
}