2016-06-08 3 views
0

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

Это 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, когда мы пишем "знаменитый". Вместо этого фильтр вызывает исчезновение всего элемента в списке. Есть ли способ решить ее?

ответ

0

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

Good Luck

+0

Это ссылка http://plnkr.co/edit/d17dZDrlhY2KIfWCbKyZ?p=preview. Я думаю, что параметр item - это элемент в элементе ng-repeat в элементах. – LearningDummy

Смежные вопросы