2014-09-21 12 views
5

Mam następujący kod dla NG-tabela: see plunkerjak dodać dynamiczną kolumnę w tabeli za pomocą złożonego obiektu lub json?

var app = angular.module('main', ['ngTable']). 
    controller('DemoCtrl', function($scope, $filter, ngTableParams) { 
     var data = [{name: "Moroni", age: 50,address:{coun:'USA',state:'sd'}}, 
      {name: "Tiancum", age: 43,address:{coun:'UK',state:'sda'}}, 
      ]; 
     $scope.columns = [ 
      { title: 'Name', field: 'name', visible: true, filter: { 'name': 'text' } }, 
      { title: 'Age', field: 'age', visible: true }, 
      { title: 'country', field: 'add', visible: true } 
     ]; 
     $scope.tableParams = new ngTableParams({ 
      page: 1,   // show first page 
      count: 10,   // count per page 
      filter: { 
       name: 'M'  // initial filter 
      } 
     }, { 
      total: data.length, // length of data 
      getData: function($defer, params) { 
       // use build-in angular filter 
       var orderedData = params.sorting() ? 
         $filter('orderBy')(data, params.orderBy()) : 
         data; 

       $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count())); 
      } 
     }); 
    }) 

i HTML:

 <tr ng-repeat="user in $data"> 
      <td ng-repeat="column in columns" ng-show="column.visible" sortable="column.field"> 
       {{user[column.field]}} 
      </td> 
     </tr> 

mam do wyświetlania nazwy wiek i kraj w kolumnie. ale używając tego kodu widzę nazwę, wiek i obiekt address, a nie kraj. zaproponuj mi, jak wyświetlić tylko kraj lub stan.

Odpowiedz

7

mam rozwiązanie dla tej kwestii: see plunker

zastąpić wyżej kod html z tym:

<tr ng-repeat="user in $data"> 
     <td ng-repeat="column in columns" ng-show="column.visible" sortable="column.field"> 
      {{user[column.field][column.subfield] || user[column.field]}} 
     </td> 
    </tr> 

add podpole do $scope.columns w danej kolumnie, w której chcesz wyświetlić podpole tak jak to:

$scope.columns = [ 
       { title: 'Name', field: 'name', visible: true, filter: { 'name': 'text' } }, 
       { title: 'Age', field: 'age', visible: true }, 
       { title: 'country', field: 'add', visible: true,subfield:'coun' } 
      ]; 
+1

Stworzyłem nową plunker że twój nie działa: http://plnkr.co/edit/lO8FhO?p=preview – Kalamarico

+0

It działa OK, aby wyświetlić listę subfieldów, ale jak możesz filtrować według tych samych subpól? (np. filtrowanie według kraju w tym przykładzie) –

Powiązane problemy