Угловой фильтр ng-repeat

введите описание изображения здесья пытаюсь отфильтровать данные таблицы на основе входного текста, но почему-то это не работает . Пожалуйста, помогите, пожалуйста.

  <div class="panel panel-default">
   <div class="panel-heading">search
    <input type="text" ng-model="search_text">
    Searching for :: {{search_text}}
   </div>  
  <Table>   
  <table class="table table-hover table-bordered">
    <tr>
        <td>Item ID</td>
        <td>Quantity</td>       
    </tr>
    <tr ng-repeat="item in items | filter:search_text">
        <td>{{item.item[0] }}</td>
        <td>{{item.item[1] }}</td>
    </tr>
 </table>
 </div>

person MGA    schedule 17.07.2015    source источник
comment
не могли бы вы показать нам объект (предметы) ,,   -  person Ahmed Eid    schedule 17.07.2015
comment
Пожалуйста, покажите нам, как структурированы ваши данные.   -  person Matt Herbstritt    schedule 17.07.2015
comment
ошибки в консоли? Ваш код кажется правильным   -  person nalinc    schedule 17.07.2015
comment
добавил мою структуру данных выше (используя firebase), и в консоли нет ошибки   -  person MGA    schedule 17.07.2015
comment
Что не работает?   -  person Dan    schedule 17.07.2015
comment
@MGA, вы получаете неверный результат или получаете ошибку в консоли. это должно быть очень просто, если сказать точно? ожидающий   -  person immirza    schedule 17.07.2015
comment
@immirza, похоже, что фильтр работает только с массивом, а не с объектами, как я уже упоминал о структуре выше (версия 1.3 X не выдает никаких ошибок в консоли, но 1.4X говорит, что ожидает массив   -  person MGA    schedule 18.07.2015


Ответы (2)


Пожалуйста, проверьте версию вашего angularjs, которую вы используете, или любые ошибки в консоли.

Ваш код, похоже, работает и действительно правильный.

  //array of items containing itemID and its quantity
  $scope.items = [{
                    item:['chair',45]
                  },
                  {
                    item:['bed',23]
                  },
                  {
                    item:['laptop',8]
                  }]

Вот рабочий plunkr.

Данные таблицы действительно фильтруются по значению, которое вы вводите в текстовое поле.

person nalinc    schedule 17.07.2015

Начиная с Angular 1.1.3 вы можете использовать:

<tr ng-repeat="item in items | filter:{item[0]: search_text}">

Это сравнит его со свойством объекта item[0] в вашем объекте. Если вам нужно точное совпадение, вы можете установить фильтрацию в true, добавив:

<tr ng-repeat="item in items | filter:{item[0]: search_text}:true">
person willedanielsson    schedule 17.07.2015
comment
На самом деле, когда я обновил свою угловую версию с версии 1.3 до версии 1.4.3, она выдает ошибку как Ошибка: [filter:notarray] Ожидаемый массив, но полученный: {-JuQxmosAMBeQitsYevP:{item:[chair,5]},-JuQxoG04-WFcrLR5D6G:{ item:[Bed,10]},-JuQxrGLi8O8vZjyQ87O:{item:[Laptop,2]},$id:items,$priority:null} ... так как я могу сохранить свои данные в виде массива в firebase? - person MGA; 17.07.2015