Estou tentando redirect para outra rota usando:
$location.path("/route");
Mas, por algum motivo, não está funcionando. Eu fiz um widget auto-complete usando jQuery-UI e estou chamando uma function do escopo uma vez que o usuário seleciona uma opção. Depurei-o e ele entra na function, mas nunca é redirecionado para a outra rota. Só muda a rota quando eu pressiono uma tecla.
Eu acho que é meio estranho, mas eu não descobri como resolver isso. eu usei
window.location = "#/route";
e funciona, mas eu quero usar a function path()
.
Alguém sabe por que isso está acontecendo?
Com um exemplo do código que não funciona, será fácil responder a essa pergunta, mas com essas informações, o melhor que posso pensar é que você está chamando o $ location.path fora do resumo do AngularJS.
Tente fazer isso no scope.$apply(function() { $location.path("/route"); });
da diretiva: scope.$apply(function() { $location.path("/route"); });
Não esqueça de injetar $location
no controlador.
Supondo que você não esteja usando o roteamento html5, tente $location.path("route")
. Isso redirectá seu navegador para #/route
que pode ser o que você deseja.
Se você precisar redirect para fora do aplicativo angular, use $window.location
. Esse foi o meu caso; espero que alguém ache útil.
Verifique seu método de roteamento:
se o seu estado de roteamento é assim
.state('app.register', { url: '/register', views: { 'menuContent': { templateUrl: 'templates/register.html', } } })
então você deve usar
$location.path("/app/register");
É difícil dizer sem saber seu código. Meu melhor palpite é que o evento onchange
não está sendo acionado quando você altera seu valor de checkbox de texto do código JavaScript.
Existem duas maneiras para isso funcionar; a primeira é chamar a onchange
por si mesmo e a segunda é esperar que a checkbox de texto perca o foco.
Verifique esta questão ; mesma questão, estrutura diferente.