Angular UI Grid click row

前端 未结 4 1419
太阳男子
太阳男子 2020-12-31 05:47

I have a list of items in an Angular UI Grid. When I click a row, I want to be taken to a different page. (In other words, each row in the grid will be a link.)

I im

4条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-31 06:03

    I figured out the answer myself. Here's my controller (ES6):

    'use strict';
    
    class TrackingRecordsCtrl {
      constructor($scope) {
        // The content of this template is included
        // separately 
        $scope.gridOptions = {
          rowTemplate: 'app/components/tracking-record/grid-row.html',
        };
    
        // This function is referenced from the row's template.
        // I'm just console.logging the row but you can of
        // course do anything you want with it.
        $scope.gridRowClick = row => {
          console.log(row);
          // or maybe $location.path(row.url)?
        };
    
        $scope.gridOptions.data = {
          // This of course can't just be an empty object.
          // Chances are you already have something defined
          // for gridOptions.data.
        };
      }
    }
    
    TrackingRecordsCtrl.$inject = ['$scope'];
    
    export default TrackingRecordsCtrl;
    

    And here's my row template (Jade):

    .ui-grid-cell(
      ng-repeat='(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name'
      ng-class="{ 'ui-grid-row-header-cell': col.isRowHeader  }"
      ui-grid-cell=''
      ng-click='grid.appScope.gridRowClick(row)'
    )
    

    And as a bonus, here's my stylesheet (SCSS). I thought it would make sense to highlight the row under the cursor and use a pointer cursor to make it clearer that the rows are clickable.

    .ui-grid-row {
      cursor: pointer;
    
      &:hover .ui-grid-cell {
        background-color: #CCC;
      }
    }
    

提交回复
热议问题