2016-03-31 5 views
0

Я использую ng-таблицу, и я хочу отфильтровать свои столбцы. Он работает с простыми данными.ng-table: фильтр в столбце

<table ng-table="tableParams" show-filter="true" class="table table-striped table-bordered table-hover" id="dynamic-table"> 
    <tr ng-repeat="consultant in $data"> 
     <td class="text-center" data-title="'Ville résidence'" filter="{ 'villeResidence': 'text' }">{{consultant.villeResidence}}</td> 
     <td class="text-center" data-title="'Contrat'" filter="{ 'typeContrat.contrat': 'text' }" > 
      <span ng-repeat="typeContrat in consultant.typeContrats"> 
       <a class="form-control-static" ui-sref="type-contrat-detail({id: {{typeContrat.id}}})">{{typeContrat.contrat}}</a>{{$last ? '' : ', '}} 
      <span> 
     </td> 
    </tr> 
</table> 

Но с более сложной колонкой (здесь: «contrat») Я не знаю, как это сделать. Если кто-нибудь знает ...

[UPDATE]

<td class="text-center" data-title="'Contrat'" filter="{ 'typeContrat.contrat': 'text' }" data-title-text="Contrat"> 
     <!-- ngRepeat: typeContrat in consultant.typeContrats --> 
    <span ng-repeat="typeContrat in consultant.typeContrats" class="ng-binding ng-scope"> 
     <a class="form-control-static ng-binding" ui-sref="type-contrat-detail({id: 1})" href="#/type-contrat/1">CDI</a>, 
     <span>  
     </span> 
    </span> 
    <!-- end ngRepeat: typeContrat in consultant.typeContrats --> 
    <span ng-repeat="typeContrat in consultant.typeContrats" class="ng-binding ng-scope"> 
      <a class="form-control-static ng-binding" ui-sref="type-contrat-detail({id: 2})" href="#/type-contrat/2">Freelance</a>, 
     <span></span> 
    </span> 
    <!-- end ngRepeat: typeContrat in consultant.typeContrats --> 
    <span ng-repeat="typeContrat in consultant.typeContrats" class="ng-binding ng-scope"> 
      <a class="form-control-static ng-binding" ui-sref="type-contrat-detail({id: 3})" href="#/type-contrat/3">Portage</a> 
     <span></span> 
    </span><!-- end ngRepeat: typeContrat in consultant.typeContrats --> 
</td> 
+0

Каковы ваши данные? '{villeResidence:« Франция », typeContrat: {// ?? ...}}' – Lulylulu

+0

Я добавил код, сгенерированный html, в главном сообщении – user1260928

ответ

1

Как уже упоминалось here и я огляделась в документации, я пришел к выводу нг-таблицы не очень хорошо подходит для вложенных моделей.

Обходным решением может быть создание свойства на основе данных массива contats, а затем фильтра. Таким образом, для каждого consultant, я добавил свойство contracts который содержит сцепленную строку из его typeContrats.contats:

_.forEach(consultantData, function(value) { 
    var contrats = _.map(value.typeContrats, 'contrat'); 
    value.contrats = _.join(contrats, ', '); 
}); 

И после этого в HTML:

<td class="text-center" data-title="'Contrat'" filter="{ 'contrats': 'text' }"> 

Вот является fiddle с примером.

Надеюсь, это то, чего вы пытались достичь.

+0

. Я тоже думал о другом имуществе. Как вы говорите, ngTable плохо подходит для вложенных моделей, знаете ли вы какой-либо другой хороший угловой модуль для таблиц? – user1260928

+0

Без проблем :) Вы могли бы взглянуть на [UI Grid] [http://ui-grid.info/]. Я не уверен, что он больше подходит для вложенных моделей, но выглядит немного зрелым. – Lulylulu