Search code examples
angularjsangularjs-directiveangular-datatables

Include custom directives on DTColumnBuilder renderwidth


Is there a way for DTColumnBuilder.newColumn.renderWidth to include custom directives? Here is a draft code of what I want to achieve.

DTColumnBuilder.newColumn('reportStructureName').withTitle('Structure Name')
    .renderWith((data, type, full) => {
          return "<my-directive></my-directive>"; 
     }),

Solution

  • You can $compile the cell content in the createdCell callback. Here is a very simple example, with a directive that does nothing but coloring the text red. Sorry for not using arrow functions :)

    $scope.data = [
         { reportStructureName : "structurename1" },
         { reportStructureName : "structurename2" },
         { reportStructureName : "structurename3" },
         { reportStructureName : "structurename4" }
    ]
    
    $scope.dtOptions = DTOptionsBuilder.newOptions()
        .withOption('data', $scope.data)
        .withPaginationType('full_numbers');
    
    $scope.dtColumns = [       
       DTColumnBuilder.newColumn('reportStructureName')
        .withTitle('Structure Name')
        .renderWith(function(data, type, full) {
           return "<my-directive>"+data+"</my-directive>"; 
        })      
        .withOption('createdCell', function(td, cellData, rowData, row, col) {
           $compile( td )( $scope ); //<--- here
        })  
    ]    
    

    Directive :

    .directive('myDirective', function() {
      return {
        restrict: 'AE',
        link: function (scope, element, attr, ctrl) {
           angular.element(element).css('color', 'red')
        }   
      }
    })
    

    demo -> http://plnkr.co/edit/aok6SyWZlLaQv8UsEVIf?p=preview