Посмотреть:
<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); ?>
см. вывод, который я прикреплл, его показывая те теги, которые не соответствуют запросу, я хочу только показать, что соответствует
Этот код
$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);
})
}
Autocomplete просто возвращает результат, указанный обещанием. Чтобы применить фильтрацию, вам необходимо предоставить метод самостоятельно.