Перенаправление с помощью 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 самостоятельно, а второй - дождаться, когда текстовое поле потеряет фокус.

Отметьте этот вопрос; та же проблема, разные рамки.