автозаполнение ng-tags-input отображает результат, не соответствующий запросу

0

Посмотреть:

<div class="row" ng-controller="TagsInputController">
    <tags-input ng-model="tags">
       <auto-complete source="queryTags($query)" min-length="1"></auto-complete>
    </tags-input>
</div>

контроллер:

myApp.controller('TagsInputController',['$scope','$timeout','$http',function($scope,$timeout,$http){
      $scope.tags = [
    { text: 'Tag1' },
    { text: 'Tag2' },
    { text: 'Tag3' }
  ];


  $scope.queryTags=function($query){
    return $http.get('tags.php',{
        params:{
            'tag':$query
        }
    })
  }

}]);

PHP: tags.php

<?php
$names=array(
    'palash',
    'kailash',
    'kuldeep'
    );

echo json_encode($names); ?>

Изображение 174551

см. вывод, который я прикреплл, его показывая те теги, которые не соответствуют запросу, я хочу только показать, что соответствует

  • 0
    Разместите свой код, чтобы мы могли помочь вам.
  • 0
    пожалуйста, прочитайте мой вопрос еще раз, я добавил код
Теги:
ng-tags-input

2 ответа

1

Этот код

$scope.queryTags=function($query){
    return $http.get('tags.php',{
        params:{
            'tag':$query
        }
    })
}

Просто вернет ваши имена из tags.php без какой-либо фильтрации, сделанной для него, а не на сервере, а не на клиенте. Вы можете использовать метод Array.prototype.filter и Array.prototype.includes для фильтрации вашего массива на основе $query

$scope.queryTags=function($query){
    return $http.get('tags.php',{
        params:{
            'tag':$query
        }
    }).then(function(names) {
        var filteredNames = names.filter(function(name) {
            return (name.includes($query);
        });
        return $q.when(filteredNames);
    })
}
0

Autocomplete просто возвращает результат, указанный обещанием. Чтобы применить фильтрацию, вам необходимо предоставить метод самостоятельно.

Ещё вопросы

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