2014-09-21 2 views
5

я следующий код для нг-таблицы: see plunkerКак добавить динамический столбец в ng-таблицу с помощью сложного объекта или 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())); 
      } 
     }); 
    }) 

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

я должен отображать название возраст и страну в колонке. но используя этот код, я могу видеть имя, возраст и address объект не страна. пожалуйста, предложите мне, как отображать только страну или страну.

ответ

7

я получил решение этого вопроса: see plunker

заменить выше кода HTML с этим:

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

добавить подполе, чтобы $scope.columns в определенном столбце, в котором вы хотите отобразить подполе так как это:

$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

Я создал новый plunker, что ваш не работает: http://plnkr.co/edit/lO8FhO?p=preview – Kalamarico

+0

It работает нормально, чтобы отображать подполе, но как вам удается фильтровать те же подполя? (например, фильтрация по странам в этом примере) –