You need to define your column as an object and define a cellTemplate . Then use the age property in your sortFn ( http://plnkr.co/edit/qmBsneZ3HmFRKSkjbBWU?p=preview ):
// main.js var app = angular.module('myApp', ['ngGrid']); app.controller('MyCtrl', function($scope) { //Notice age is now an object to be used with the cellTemplate var myData1 = [{name: "Moroni", age: {age: 50, ageWord: "Fifty"}}, {name: "Tiancum", age: {age: 43, ageWord: "Forty-Three"}}, {name: "Mildred", age: {age: 70, ageWord: "Seventy"}}, {name: "Jacob", age: {age: 27, ageWord: "Twenty-Seven"}}]; $scope.gridOptions = { data: 'gridData', columnDefs: [ {field: 'name', displayName: 'Name'}, {field:'age', displayName:'Age', cellTemplate: '<div class="ngCellText" ng-class="col.colIndex()"><span ng-cell-text>{{COL_FIELD.ageWord}}</span></div>', sortFn: function (a, b) { //compare age property of the object if (a.age < b.age) { return -1; } else if (a.age > b.age) { return 1; } else { return 0; } } }] }; $scope.gridData = myData1; });
According to the default cellTemplate docs:
<div class="ngCellText" ng-class="col.colIndex()"><span ng-cell-text>{{COL_FIELD CUSTOM_FILTERS}}</span></div>
So, all you have to do is use {{COL_FIELD.age}} and any custom filters that you may (or may not) have.
source share