2015-03-10 4 views
3

У меня есть массив, который я использую в ngtable, но мне нужна помощь в фильтрации данных. Я не могу сортировать, когда я нажимаю на заголовок. Пожалуйста, помогитеКак фильтровать и сортировать элементы массива в ngtable?

HTML

<table class="table" ng-table="namingConventionParams" show-filter="true"> 
    <tr ng-repeat="item in $data | orderBy:'toString()'"> 
     <td style="word-break:break-all" data-title="items.tableHeader" align="left" filter="{ '0': 'text' }" sortable="'valueOf()[0]'">{{item}}</td> 
    </tr> 
</table> 

Контроллер

$scope.namingConventionParams = new ngTableParams({ 
    page: 1, // show first page 
    count: 10 
}, { 
    defaultSort: "asc", 
    total: $scope.items.instanceData.length, // length of data 
    counts: [], 
    getData: function($defer, params) { 
     var data = $scope.items.instanceData; 
     var orderedData = params.filter() ? $filter('filter')(data, params.filter()) : data; 
      orderedData = params.sorting() ? $filter('orderBy')(orderedData, params.orderBy()) : orderedData; 
      params.total(orderedData.length); 
      $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));    
    } 
}); 

Plunker link

ответ

1

Проблема с кодом, что ваш массив данных содержит только строки, а не объектов, так это фильтрация на основе только по первому персонажу, если у вас есть sortable="valueOf()[0]"

Решение состоит в том, чтобы использовать объекты вместо этого. Вот соответствующий код, который должен быть обновлен:

HTML

<td ... filter="{'name':'text'}" sortable="name">{{item.name}}</td> 

JS

var data = $scope.items.instanceData.map(function(text) { 
    return {name: text}; 
}); 

Plunker Demo

+0

Еще фильтр не работает должным образом. 'eg: ba' не дает мне никакой ценности, хотя данные имеют' bay local mysql' – abi1964

+0

Нажав на заголовок, чтобы фильтр был тем, что вы хотели правильно? 'http: // g.recordit.co/vjbWcycZcd.gif' –

+0

Спасибо, что помогли мне в сортировке, но мне нужна помощь как в фильтре, так и в сортировке. В фильтре или поиске работает только поиск 1-го символа. Я использую фильтр и поиск как 1 термин. Извините за путаницу. – abi1964

Смежные вопросы