<a ng-href="#" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
Quero recarregar a página. Como posso fazer isso?
<a ng-href="#" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
Quero recarregar a página. Como posso fazer isso?
Respostas:
Você pode usar o reloadmétodo do $routeserviço. Injete $routeno seu controlador e crie um método reloadRouteno 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 $windowe 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 $statevez de $routee então você tem:
$scope.reloadRoute = function() {
$state.reload();
};
windowSe o objeto for disponibilizado por meio do $windowserviço para testes e zombarias mais fáceis , você pode optar por algo como:
$scope.reloadPage = function(){$window.location.reload();}
E:
<a ng-click="reloadPage" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
Como observação, acho que o $ route.reload () realmente recarrega a página, mas apenas a rota .
$windowvez de window.
$windowdocs , principalmente, é porque reloadPageseria (melhor) testável quando se usa $window.
location.reload();
Faz o truque.
<a ng-click="reload()">
$scope.reload = function()
{
location.reload();
}
Não há necessidade de rotas ou qualquer coisa apenas js velhos simples
Se estiver usando o ui-router mais avançado da Angulars que eu recomendaria definitivamente, agora você pode simplesmente usar:
$state.reload();
O que é essencialmente o mesmo que a resposta de Dunc.
Minha solução para evitar o loop infinito foi criar outro estado que fez o redirecionamento:
$stateProvider.state('app.admin.main', {
url: '/admin/main',
authenticate: 'admin',
controller: ($state, $window) => {
$state.go('app.admin.overview').then(() => {
$window.location.reload();
});
}
});
Angular 2+
Eu encontrei isso enquanto procurava pelo Angular 2+, então aqui está o caminho:
$window.location.reload();
É 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":
<a href="" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
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 {{}}.
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:
$scope.someFuncName = function () {
//go to another route
$location.path('/another-route');
};
e na configuração do módulo, adicione outro when:
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/first-page', {
templateUrl: '/first-template',
controller: 'SomeCtrl'
}).when('/another-route', {//this is the new "when"
redirectTo: '/first-page'
});
}])
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.
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 que redirectToas resolvefunções par e reexecutam normalmente$route.reload() (veja os console.log).
<a title="Pending Employee Approvals" href="" ng-click="viewPendingApprovals(1)">
<i class="fa fa-user" aria-hidden="true"></i>
<span class="button_badge">{{pendingEmployeeApprovalCount}}</span>
</a>
e no controlador
$scope.viewPendingApprovals = function(type) {
if (window.location.hash.substring(window.location.hash.lastIndexOf('/') + 1, window.location.hash.length) == type) {
location.reload();
} else {
$state.go("home.pendingApproval", { id: sessionStorage.typeToLoad });
}
};
e no arquivo de rota
.state('home.pendingApproval', {
url: '/pendingApproval/:id',
templateUrl: 'app/components/approvals/pendingApprovalList.html',
controller: 'pendingApprovalListController'
})
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.
Isso pode ser feito chamando o método reload () em JavaScript.
location.reload();