2015-05-24 16 views
6

Gibt es eine bessere Möglichkeit, verschachtelte Tabellen in eckigen Datatables anzuzeigen? löste ich mein Problem durch rowCallback mit und Click-Ereignis einrichten:Angular datatables geschachtelte Zeilen Rendering

$scope.dtOptions = DTOptionsBuilder.fromSource('data.json') 
    .withOption('rowCallback', rowCallback) 

und in einem Klick-Handler I dt-Instanz erhalten und bauen html Zeilendaten aus Datentabelle Instanz verwenden.

function rowCallback(tabRow, data, dataIndex) { 
    $(tabRow).unbind('click'); 
    $(tabRow).on('click', function() { 
     console.log('click'); 
     $(this).find('.a1-icon').toggleClass('fa-rotate-180'); 
     var tr = $(tabRow); 
     var table = $scope.dtInstance.DataTable; 
     var row = table.row(tr); 

     if (row.child.isShown()) { 
      // This row is already open - close it 
      row.child.hide(); 
      tr.removeClass('shown'); 
     } 
     else { 
      // Open this row 
      row.child(format(row.data())).show(); 
      tr.addClass('shown'); 
     } 
    }); 
} 

Aber es fühlt sich ein bisschen seltsam, besonders für eckig. Hier ist Plunker mit voller vereinfachten Code http://plnkr.co/edit/gVf926obJKTXvXU7fLdA?p=preview

Antwort

0

$(tabRow).on('click', function() {}) 
 

 
//instead of this "on" event Use "load" 
 

 
$(tabRow).load('click', function() {})

Verwandte Themen