У меня простая форма с полем ввода и кнопкой отправки. Это словарная служба, в которой пользователь вводит слово в поле ввода и нажимает кнопку, которая запускает метод JQuery. Этот метод, он превращает API (Merriam-Webster) API через серверный PHP и заполняет div (#meaning
) возвращаемыми данными.
В настоящее время я делаю это с помощью JQuery, что означает, что div обновляется без обновления страницы, которое является сладким. Однако это не изменяет URL. Мне нужно, чтобы URL-адрес динамически менялся каждый раз, когда выполняется новый поиск. Например, если вы введете "cat" и нажмите " Lookup
, URL-адрес должен измениться на что-то вроде:
.../словарь/кошка
В настоящее время он просто остается:
.../Словарь
Если каким-то образом я смогу реплицировать изменение URL-адресов, но при этом избегаю полного обновления страницы, пользователи смогут напрямую добавить в закладки конкретное значение, не просматривая его каждый раз, когда это необходимо. Я пробовал читать Angular JS для работы, но я изо всех сил стараюсь пройти. Моя текущая реализация Angular - это та, где у меня разные HTML-документы для разных видов (например,/about,/contact и т.д.). Но в этой конкретной ситуации, как я могу получить предварительно сделанный документ, когда запросы запускаются "на лету"? Какие-либо предложения?
Не уверен, правильно ли сформулировал вопрос. Пожалуйста, не стесняйтесь спрашивать меня о каких-либо особенностях, если это необходимо. Я изо всех сил пытаюсь понять это, но если вы посмотрите на словарную службу сайтов, таких как SpanishDict, вы поймете, чего я пытаюсь достичь.
Мне не нужно, чтобы ты написал код для меня. Мне просто нужно общее представление о том, как это сделать, логично, и что нужно использовать. Если не Angular JS, я открыт для создания более подходящей структуры.
Похоже, вы хотите добавить ngRoute в свое приложение. Здесь вы можете увидеть пример.
Из документов:
angular.module('ngRouteExample', ['ngRoute'])
.config(function($routeProvider, $locationProvider) {
$routeProvider
.when('/Book/:bookId/ch/:chapterId', {
templateUrl: 'chapter.html',
controller: 'ChapterController'
});
В этом примере :bookId
и :chapterId
- это переменные, которые берут свое значение из URL-адреса. Например, с /Book/MobyDick/ch/7
, bookId будет "MobyDick", а chapterId будет "7".
В вашем случае URL-адрес функции if может выглядеть так:
when('/dictionary/:word', {
templateUrl: 'yourTemplate.html', // optional
controller: 'yourController' // optional
})
Вы делаете это неправильно. Не пытайтесь обновить URL после поиска. Вместо этого поиск должен просто привести вас к новому URL-адресу и позволить логике оттуда, используя переменную маршрута.
term
.when('/dictionary/:term', { title: 'Meaning of ' + :term, controller : 'dictController' })
Даже{{term}}
не удалось..when('dictionary/:term')
, то вы$routeParams.term
к нему доступ с помощью$routeParams.term
. Вы также должны ввести$routeParams
в свой контроллер.