Я пытаюсь настроить параметры запроса с помощью UI-маршрутизатора и думаю, что, наконец, понял, почему мне так сложно с ним работать. Я строй небольшого поиска приложения, которое имеет 2 состояние:Параметры запроса UI-маршрутизатора и несколько состояний
$stateProvider
.state('home', {
url: '/',
.state('search', {
url: '/search',
},
Дом штат имеет свой собственный шаблон (вид) и так же состояние поиска. Они имеют один и тот же контроллер. В основном все исходное состояние - это окно поиска, в котором вы можете ввести свой поисковый запрос или выбрать автозаполнение.
После того, как вы представили свой поисковый запрос он идет к поиску состоянию через
$state.go('search');
Я пробовал много способов, чтобы получить слово для поиска пользователя (ей) в URL на странице поиска с помощью интерфейса маршрутизатора с синтаксис запросов параметров в url: '/search?q'
в сочетании с $ stateParams в контроллере установлен как
vm.searchTerms = $stateParams.q || '';
я включил его в $state.params.q
, но это не исправить.
Я успешно смог получить параметры запроса в URL-адресе, однако, когда я это делаю, он нарушает функцию поиска. Параметры автозаполнения и запроса работают и отображаются, но функция поиска останавливается.
Однако, я думаю, что, наконец, понимаю, почему он не работает так, как мне бы хотелось. Я считаю, что это связано с тем фактом, что я использую 2 состояния, а не одно родительское состояние со вложенным дочерним состоянием и что шаблоны не вложены - так что $ scope не наследует. Я приближаюсь к этой работе ... он переходит из домашнего состояния в состояние поиска, отображая параметры запроса в URL-адресе поискового запроса ... его просто этот поиск разбивается, но работают параметры автозаполнения и запроса.
То, что я пытаюсь достичь, состоит в том, чтобы пользователь вводил условия поиска из исходного состояния, а затем отображал результаты в состоянии поиска вместе с параметрами запроса в URL-адресе. Есть ли что-нибудь, что мне нужно делать с дома состояние или поиск заявить, что я не делаю?
ИЛИ
Есть ли что-нибудь в моем поиске() в мой контроллер, который может быть проблема
//search()
vm.search = function() {
//$state.go('search', {q: vm.searchTerms});
$state.go('search');
console.log(vm.searchTerms);
console.log('success - search');
vm.currentPage = 1;
vm.results.documents = [];
vm.isSearching = true;
return coreService.search(vm.searchTerms, vm.currentPage)
.then(function(es_return) {
console.log('success - return');
var totalItems = es_return.hits.total;
var totalTime = es_return.took;
var numPages = Math.ceil(es_return.hits.total/vm.itemsPerPage);
vm.results.pagination = [];
for (var i = 0; i <= 10; i++) {
console.log('success - for');
vm.results.totalItems = totalItems;
vm.results.queryTime = totalTime;
vm.results.pagination = coreService.formatResults(es_return.hits.hits);
vm.results.documents = vm.results.pagination.slice(vm.currentPage, vm.itemsPerPage);
console.log('success - documents');
}
vm.noResults = true;
}),
function(error){
console.log('ERROR: ', error.message);
vm.isSearching = false;
},
vm.captureQuery();
console.log('success - captureQuery');
};