Фильтр списка с несколькими ключевыми словами в ионном

0

Я пытаюсь создать панель поиска в ионной форме, если это похоже на этот пример.

Это приложение app.html

<ion-content class="has-header" padding="true" ng-controller="appCtrl">
//Search Bar
<label class="item item-input">
    <i class="icon ion-search placeholder-icon"></i>
    <input type="search" placeholder="Search" ng-model="searchText">
</label>

//This is the list that we want to search
<form style="" class="list">
    <ion-list>
      <ion-item ng-repeat="item in items | filter: userFilter() ">
        <div class="row responsive-sm">
          <div class="col">
            <div>Item Id {{item.id}}</div>
            <div>Item detail{{item.detail}}</div>
            <div>Date{{item.date}}</div>
          </div>
        </div>
      </ion-item>
    </ion-list>
  </form>
</ion-content>

Это controller.js

.controller('appCtrl', function($scope,$state,$location,$ionicModal,$filter) {
$scope.items = [               
                            {
                               id        : 1 ,
                               detail    : "A book about ghost",
                               date      : "20 March 1999"
                            },
                            {
                               id        : 2,
                               detail    : "A Book about famous person",
                               date      : "20 March 1999"
                            },
                            {
                               id        : 3,
                               detail    : "A Map to a house",
                               date      : "20 March 1999"
                            },
                            {
                              id        : 4,
                               detail    : "A famous horror Novel",
                               date      : "20 March 1999"
                            },
                             {
                              id        : 5,
                               detail    : "A story about the haunted house",
                               date      : "20 March 1999"

                            }];
//The filter that is used
$scope.userFilter = function(item) {
  // default to no match
  var isMatch = false;

  if ($scope.searchText) {
    // split the input by space
    var parts = $scope.searchText.split(' ');

    // iterate each of the words that was entered
    parts.forEach(function(part) {
      // if the word is found in the post, a set the flag to return it.
      if (new RegExp('part').test(item)) {
        isMatch = true;
      } 
    });
  } else {
    // if nothing is entered, return all posts
    isMatch = true;
  }

  return isMatch;};})

Если код работает, он должен показать пункт № 2 и пункт № 4, когда мы пишем "знаменитый". Вместо этого фильтр вызывает исчезновение всего элемента в списке. Есть ли способ решить ее?

Теги:
ionic-framework
filter

1 ответ

0

кажется, что вы вызываете функцию в ng-repeat filter | userFilter() без параметра, и у вас есть функция с параметром item, пожалуйста, подтвердите, если это не проблема. Я могу попробовать для вашего plunkr, и ваш пример ссылки отсутствует.

Удачи

  • 0
    Это ссылка plnkr.co/edit/d17dZDrlhY2KIfWCbKyZ?p=preview . Я думаю, что параметр item это тот, который находится в элементе ng-repeat в items.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню