2014-09-21 4 views
5

ho seguente codice per ng-tavolo: see plunkercome aggiungere una colonna dinamica in ng-table usando oggetti complessi o 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())); 
      } 
     }); 
    }) 

e 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> 

devo visualizzare all'età nome e paese in colonna. ma usando questo codice posso vedere nome, età e address oggetto non Paese. per favore suggeriscimi come visualizzare solo il paese o lo stato.

risposta

7

ho ottenuto la soluzione per questa domanda: see plunker

sostituire sopra codice html con questo:

<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> 

aggiuntivo sottocampo a $scope.columns in una determinata colonna in cui si desidera visualizzare sottocampo come questo come questo:

$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

ho creato una nuova plunker che il vostro non funziona: http://plnkr.co/edit/lO8FhO?p=preview – Kalamarico

+0

E ' funziona bene per elencare i sottocampi, ma come fai a filtrarli per gli stessi sottocampi? (ad esempio, filtrando per paese in questo esempio) –

Problemi correlati