Я создал небольшое приложение для поиска фильмов с AngularJS, UI Router, UI Bootstrap Typeahead и Elasticsearch. Для справки я вчера спросил this и получил хороший, быстрый ответ. Мне удалось заставить его работать без ng-keypress. Я просто положил $state.go()
прямо в функцию и сработал связывание/переход. При нажатии клавиши «ввод» на вкладке «Поиск» она выводится на странице «Главная страница/запрос» на страницу результатов. Однако он НЕ отображает никаких предложений. Как только он попадает на страницу результатов ... ничего не происходит. Я должен снова ввести запрос поиска для предложений и поиска для выполнения.
Я действительно пытаюсь получить функциональность, где на hp, как только пользователь вводит на вход поиска, что он идет на страницу результатов И как только он туда доберется, эти предложения отображаются и поиск может быть выполнен.
Вот мой код
HTML
<form ng-submit="vm.search()" class="form-horizontal col-md-8 col-md-offset-2" id="hp-search-form"><div class="input-group input-group-lg">
<input type="text" name="q" ng-model="vm.searchTerms" ng-keypress="navigate('search')" placeholder="Search" class="form-control input-lg" uib-typeahead="query for query in vm.getSuggestions($viewValue)" typeahead-show-hint="true" typeahead-focus-first="false" typeahead-on-select="vm.search($item)" auto-focus style="border:0px;">
<i ng-show="loadingLocations" class="fa fa-refresh"></i>
<div ng-show="noResults">
<i class="fa fa-remove"></i> No Results Found
</div>
<span class="input-group-btn">
<button class="btn btn-primary btn-lg" type="submit" value="Search" id="hp-search-button" ng-submit="vm.search()"><i class="fa fa-search fa-lg"></i></button>
</span>
и функция getSuggestions в searchCtrl
vm.getSuggestions = function(query) {
$state.go('search');
console.log(vm.searchTerms);
vm.isSearching = true;
console.log(vm.searchTerms);
return searchService.getSuggestions(query).then(function(es_return){
console.log(vm.searchTerms);
var suggestions = es_return.hits.hits;
if (suggestions) {
//console.log(suggestions);
return vm.autocomplete.suggestions = suggestions.map(function(item) {
return item._source.ymme;
//console.log(autocomplete.suggestions);
});
}
else {
vm.autocomplete.suggestions = [];
vm.noResults = true;
}
vm.isSearching = false;
},
function(error) {
//console.log('ERROR: ', error.message);
vm.isSearching = false;
});
};
если вы написали $ state.go ('search'); , дальнейший код не будет выполнен, попробуйте сделать plunker –
@MandeepSingh - Я предполагаю, что «когда» должно быть «где» я написал $ state.go («поиск»). Я попробую сделать плункер, может занять некоторое время - никогда не делал этого раньше. Так что независимо от того, где я ставлю $ state.go - код перестанет выполняться ...? – user3125823
Почему вы меняете состояние для получения результатов поиска. – pritesh