Você pode usar o reload
método do $route
serviço. Injete $route
no seu controlador e crie um método reloadRoute
no seu $scope
.
$scope.reloadRoute = function() {
$route.reload();
}
Então você pode usá-lo no link como este:
<a ng-click="reloadRoute()" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
Este método fará com que a rota atual seja recarregada. Se, no entanto, você deseja executar uma atualização completa, você pode injetar $window
e usar isso:
$scope.reloadRoute = function() {
$window.location.reload();
}
Edição posterior (ui-router):
Conforme mencionado por JamesEddyEdwards e Dunc nas respostas, se você estiver usando o angular-ui / ui-router, poderá usar o seguinte método para recarregar o estado / rota atual. Basta injetar em $state
vez de $route
e então você tem:
$scope.reloadRoute = function() {
$state.reload();
};
window
Se o objeto for disponibilizado por meio do$window
serviço para testes e zombarias mais fáceis , você pode optar por algo como:E:
Como observação, acho que o $ route.reload () realmente recarrega a página, mas apenas a rota .
fonte
$window
vez dewindow
.$window
docs , principalmente, é porquereloadPage
seria (melhor) testável quando se usa$window
.Faz o truque.
Não há necessidade de rotas ou qualquer coisa apenas js velhos simples
fonte
Semelhante à resposta de Alexandrin, mas usando $ state em vez de $ route:
(Da resposta de JimTheDev para SO aqui .)
fonte
Se estiver usando o ui-router mais avançado da Angulars que eu recomendaria definitivamente, agora você pode simplesmente usar:
O que é essencialmente o mesmo que a resposta de Dunc.
fonte
Minha solução para evitar o loop infinito foi criar outro estado que fez o redirecionamento:
fonte
Angular 2+
Eu encontrei isso enquanto procurava pelo Angular 2+, então aqui está o caminho:
fonte
É fácil de usar
$route.reload()
(não se esqueça de injetar $ route no seu controlador), mas a partir do seu exemplo, você pode usar "href" em vez de "ng-href":Você só precisa usar ng-href para proteger o usuário de links inválidos causados por eles clicarem antes que o Angular substitua o conteúdo das tags {{}}.
fonte
No Angular 1.5 - depois de tentar algumas das soluções acima que desejavam recarregar apenas os dados sem atualização de página inteira, tive problemas ao carregar os dados corretamente. Notei, porém, que quando vou para outra rota e volto à atual, tudo funciona bem, mas quando quero recarregar a rota atual usando apenas
$route.reload()
parte do código não é executado corretamente. Depois, tentei redirecionar para a rota atual da seguinte maneira:e na configuração do módulo, adicione outro
when
:e funciona muito bem para mim. Ele não atualiza a página inteira, mas apenas faz com que o controlador e o modelo atuais sejam recarregados. Eu sei que é um pouco hacky, mas essa foi a única solução que encontrei.
fonte
var reload = $location.url(); $location.url(''); $timeout(function() { $location.url(reload); });
; não há necessidade de criar rotas aleatórias. Mas seria interessante ver qual código não é reavaliado para você. Parece queredirectTo
asresolve
funções par e reexecutam normalmente$route.reload()
(veja os console.log).e no controlador
e no arquivo de rota
Portanto, se o ID passado na URL for o mesmo que vem da função chamada clicando na âncora, basta recarregar, ou seguir a rota solicitada.
Por favor, ajude-me a melhorar esta resposta, se isso for útil. Qualquer sugestão é bem vinda.
fonte
Isso pode ser feito chamando o método reload () do objeto window em JavaScript simples
fonte
Eu sugeriria consultar a página. Sugestão oficial
https://docs.angularjs.org/guide/$location
fonte
Isso pode ser feito chamando o método reload () em JavaScript.
fonte