I am using angularjs with ui-grid. One column of the grid contains a timestamp that I would like to render as a properly formatted date.
Up to now, I tried like this but the function is never called.
$scope.formatDate = function(date) {
return '42';
};
$scope.columns = [
{field: 'date', cellTemplate: '<div class="ui-grid-cell-contents">formatDate({{row.entity.date}})</div>'},
{field: 'title'},
{field: 'quantity'},
//[...]
];
Instead, the function call is considered as a string literal. As a result, the column always displays formatDate(*timestamp*)
.
I only found a non-satisfying way of achieving it by defining a function on each single row when receiving them :
$scope.columns = [
{field: 'getFormattedDate()'},
//[...]
];
$http.post('/api/data/').success(function (data) {
$scope.gridOptions.data = data.elements;
$scope.gridOptions.data.forEach(function(row) {
row.getFormattedDate = function() {
return '42';
}
})
});
Any better suggestion?
{{}}
on scope function variables – UpstretchedformatDate(row.entity.date)
in every cells :D – Rochegrid.appScope
. Please post it as an answer and I will accept it. – Roche