Как относиться к объектам строк в пользовательских функциях сортировки в ng-grid?

Я следил за документацией в https://github.com/angular-ui/ng-grid/wiki/Sorting-and-filtering, но единственной информацией, передаваемой пользовательской функции сортировки, являются значения ячеек в соответствующем столбце.

Я хотел бы получить доступ к другим столбцам в пользовательской функции сортировки.

например: http://plnkr.co/edit/FvcKQjkUv1eeoYPzjdRD?p=preview d хотел бы отсортировать по имени после принятия роли во внимание. Это было бы легко, если бы был предоставлен объект строки или что-то в этом роде.

Спасибо за любую помощь. Юваль


person Yuval Dimnik    schedule 31.07.2013    source источник


Ответы (1)


попробуйте реализовать шаблон заголовка, и весь контроль в ваших руках для сортировки, обратный вызов переходит к функции, где вы можете делать все, что хотите

var myHeaderCellTemplate = '<div class="ngHeaderSortColumn {{col.headerClass}}" ng-style="{cursor: col.cursor}" ng-class="{ ngSorted: !noSortVisible }">'+
    '<div ng-click="sortByMyPreference()" ng-class="\'colt\' + col.index" class="ngHeaderText">{{col.displayName}}</div>'+
    '<div class="ngSortButtonDown" ng-show="ID.down"></div>'+
    '<div class="ngSortButtonUp" ng-show="ID.up"></div>'+
    '<div class="ngSortPriority">{{col.sortPriority}}</div>'+
    '<div ng-show="col.resizable" '+
          'class="ngHeaderGrip" '+
          'ng-click="col.gripClick($event)" '+
          'ng-mousedown="col.gripOnMouseDown($event)"></div>';

вот плункер http://plnkr.co/edit/OxyV1NlgznEJ8ulNAkt2?p=preview

я оставил реализацию сортировки до того, как вы нажмете на вкладку «Имя», она покажет вам предупреждение, а ID.down и ID.up вы можете переключить с помощью true false, чтобы показать стрелки

person Vinod Louis    schedule 31.07.2013
comment
Спасибо за планкр. Я немного отредактировал его: plnkr.co/edit/550uOQbKF9TbfjD53zIn?p=preview Как видите, простое переупорядочивание массива данных не влияет на порядок данных в отображаемой сетке. - person Yuval Dimnik; 01.08.2013
comment
да, это сработало, когда мы изменили массив на пустой или присвоили любой другой массив. Реальная реализация, в которой я пробовал такую ​​сортировку, находится здесь plnkr.co/edit/sFuCa0?p=preview в скрипке сортировка по столбцу разрешений выполняется вручную, а другой столбец является реализацией по умолчанию самой ng-grid - person Vinod Louis; 02.08.2013