Перенаправление с помощью AngularJS
Я пытаюсь перенаправить на другой маршрут, используя:
$location.path("/route");
Но по какой-то причине он не работает. Я сделал автозаполняющий виджет, используя jQuery-UI, и я вызываю функцию из области, как только пользователь выбирает параметр. Я отлаживал его, и он входит в функцию, но никогда не перенаправляется на другой маршрут. Он меняет маршрут только при нажатии клавиши.
Я думаю, что это странно, но я не понял, как это решить. Я использовал
window.location = "#/route";
и он работает, но я хочу использовать функцию path()
.
Кто-нибудь знает, почему это происходит?
Ответы
Ответ 1
С примером неработающего кода будет легко ответить на этот вопрос, но с этой информацией лучшим, что я могу думать, является то, что вы вызываете $location.path за пределами дайджестора AngularJS.
Попробуйте сделать это в директиве scope.$apply(function() { $location.path("/route"); });
Ответ 2
Не забудьте ввести $location
в контроллер.
Ответ 3
Предполагая, что вы не используете маршрутизацию html5, попробуйте $location.path("route")
.
Это перенаправит ваш браузер на #/route
, который может быть тем, что вы хотите.
Ответ 4
Если вам нужно перенаправить из приложения angular, используйте $window.location
. Это было моим делом; надеюсь, кто-то найдет это полезным.
Ответ 5
Проверьте свой метод маршрутизации:
если ваше состояние маршрутизации похоже на это
.state('app.register', {
url: '/register',
views: {
'menuContent': {
templateUrl: 'templates/register.html',
}
}
})
то вы должны использовать
$location.path("/app/register");
Ответ 6
Трудно сказать, не зная ваш код. Лучше всего предположить, что событие onchange
не срабатывает при изменении значения вашего текстового поля из кода JavaScript.
Есть два способа для этого: первый - вызвать onchange
самостоятельно, а второй - дождаться, когда текстовое поле потеряет фокус.
Отметьте этот вопрос; та же проблема, разные рамки.