F
F
Friend2016-10-14 01:53:02
Angular
Friend, 2016-10-14 01:53:02

How to set many filters for one key in Angular?

Отталкивался от этого примера plnkr.co/edit/5WF6FxvwocVBqhuvt4VL?p=preview
Начал пробовать изменить этот пример и столкнулся с проблемой, не получается выставить на 1 ключ 2 и более фильтра(ключ это материал, а фильтры дерево, пластик). Когда ищу дерево, находит норм, пластик так же, но вместе ничего не показывает, а как совместить что бы показывало вместе дерево и пластик? И возможно направить фильтр чисто по ключу?(фильтр число 1, ключ размер, а находит все где есть 1)

<tr data-ng-repeat="hotel in hotels | filter:search.type1 | filter:search.type2">
                <td>{{hotel.name}}</td>
                <td>{{hotel.star}}</td>
                <td>{{hotel.type}}</td>
                <td>{{hotel.price}}</td>
            </tr>

<input type="checkbox" data-ng-model='search.type2' data-ng-true-value='double suite' data-ng-false-value='' /> Double suite

Заранее спасибо

Answer the question

In order to leave comments, you need to log in

1 answer(s)
M
Markus Kelvin, 2016-10-14
@mmxdesign

In such cases, you need to write a special filter

app.filter('filterMaterials', function () {
  return function (materials, wood, plastic) {
     var filteredMaterials = [];
     for (var i = 0; i < materials.length; i++) {
          if (materials[i].type === wood || materials[i].type === plastic) {
          	filteredMaterials.push(materials[i]);
          }
     }
     return filteredMaterials;
  };
});

and you need to write it in html adding one after another, as if piping... with such an overview, you can pass as many parameters as you like to the filter... and you also need to add these parameters to the filter..
<tr data-ng-repeat="material in materials | filterMaterials:search.wood:search.plastic">
       <td>{{material.name}}</td>
       <td>{{material.type}}</td>
       <td>{{material.price}}</td>
  </tr>

<input type="checkbox" data-ng-model='search.wood'/>
<input type="checkbox" data-ng-model='search.plastic'/>

Надеюсь вам это поможет понять.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question