У вас есть небольшое поисковое приложение, использующее Elasticsearch и AngularJS. Я использую $state.go()
в своем поиске() на моей кнопке ng-submit. searchTerms
- это моя ng-модель на входе.AngularJS странное поведение запросов с UI-маршрутизатором
У меня есть 2 контроллера, homeCtrl и searchCtrl. homeCtrl для домашней страницы, которая является просто полем поиска и предоставляет функции автозаполнения. searchCtrl - для страницы результатов и имеет одинаковое поле поиска и предоставляет область результатов.
Когда я $state.go()
так:
$state.go('search', {q: searchTerms});
Это решило проблему у меня был, который был
http://localhost:8000/app/search?q=searchTerms
ВМЕСТО
http://localhost:8000/app/search?q=userTypedInput
Так что теперь функции URL правильно , но результаты поиска не отображаются ...?
Когда я
$state.go('search', {q: 'searchTerms'});
результаты поиска отображаются НО URL не работает, как хотелось бы.
Поэтому в основном то, что я спрашиваю, как я могу получить мой URL, чтобы работать по желанию, который
http://localhost:8000/app/search?q=userTypedInput
И еще есть отображение результатов поиска?
UPDATE Это мои состояния для пользовательского интерфейса маршрутизатора
$stateProvider
.state('home', {
url: '/home',
templateUrl: 'home/home.html', controller: 'homeCtrl'})
.state('search', {
url: '/search?q',
views: {
'' : { templateUrl: 'search/search.html', controller: 'searchCtrl' }
//add more views here when necessary
}
});
searchCtrl
У меня есть это в верхней
'use strict';
angular.module("searchApp.search", ['ngAnimate'])
.controller('searchCtrl', ['$scope', '$sce', '$stateParams', '$state', 'searchService', function($scope, $sce, $stateParams, $state, searchService) {
$scope.searchTerms = $stateParams.searchTerms || null;
и это поиск(), который содержит $state.go()
$scope.search = function() {
resetResults();
var searchTerms = $scope.searchTerms;
if (searchTerms) {
$scope.results.searchTerms = searchTerms;
} else {
return;
}
getResults();//calls searchService which does the searching
$state.go('search', {q: searchTerms});
};
var getResults = function() {
$scope.isSearching = true;
searchService.search($scope.results.searchTerms,$scope.currentPage,...
Я пытаюсь получить URL, чтобы быть
http://localhost:8000/app/search?q=userTypedInput
и иметь дисплей результатов, а также.
Отключить 'html5mode' и проверить, он будет работать в противном случае, дайте мне знать – swapnesh
@swapnesh Я сделал html5mode false и без изменений, результаты по-прежнему не отображаются – user3125823
Вы не указали необходимую информацию, чтобы выяснить проблему здесь.ui-router отвечает за построение URL и загрузку страницы. Невозможно узнать, почему результаты не отображаются из кода, который вы отправили – Austin