@Tiran_94
Python Django

Как задать много фильтров по одному ключу в Angulyar?

Отталкивался от этого примера 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


Заранее спасибо
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ответы на вопрос 1
@mmxdesign
Software Engineer
В таком случаи нужно писать специальный фильтр

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;
  };
});


а писать это в html нужно так добавляя друг за другом, как бы piping... таким обзаром можно передать сколько угодно параметров в фильтр... и на фильтре тоже нужно сделать добавления этих параметров..

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


Надеюсь вам это поможет понять.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы