Puedes usar el reload
método del $route
servicio. Inyecte $route
en su controlador y luego cree un método reloadRoute
en su $scope
.
$scope.reloadRoute = function() {
$route.reload();
}
Luego puede usarlo en el enlace de esta manera:
<a ng-click="reloadRoute()" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
Este método hará que la ruta actual se vuelva a cargar. Sin embargo, si desea realizar una actualización completa, puede inyectar $window
y usar eso:
$scope.reloadRoute = function() {
$window.location.reload();
}
Edición posterior (ui-router):
Como lo mencionaron JamesEddyEdwards y Dunc en sus respuestas, si está usando angular-ui / ui-router puede usar el siguiente método para recargar el estado / ruta actual. Simplemente inyecta en $state
lugar de $route
y luego tienes:
$scope.reloadRoute = function() {
$state.reload();
};
window
El objeto está disponible a través del$window
servicio para facilitar las pruebas y burlas , puede ir con algo como:Y:
Como nota al margen, no creo que $ route.reload () realmente vuelva a cargar la página, sino solo la ruta .
fuente
$window
lugar dewindow
.$window
documentos , principalmente es porquereloadPage
sería (mejor) comprobable cuando se utiliza$window
.Hace el truco.
No hay necesidad de rutas ni nada simplemente js viejos
fuente
Similar a la respuesta de Alexandrin, pero usando $ state en lugar de $ route:
(De la respuesta SO de JimTheDev aquí ).
fuente
Si usa Angulars ui-router más avanzado que definitivamente recomendaría, ahora puede simplemente usar:
Que esencialmente está haciendo lo mismo que la respuesta de Dunc.
fuente
Mi solución para evitar el bucle infinito fue crear otro estado que haya realizado la redirección:
fuente
Angular 2+
Encontré esto mientras buscaba Angular 2+, así que aquí está la forma:
fuente
Es bastante fácil de usar
$route.reload()
(no olvides inyectar $ route en tu controlador), pero a partir de tu ejemplo, puedes usar "href" en lugar de "ng-href":Solo necesita usar ng-href para proteger al usuario de enlaces inválidos causados por ellos haciendo clic antes de que Angular haya reemplazado el contenido de las etiquetas {{}}.
fuente
En Angular 1.5: después de probar algunas de las soluciones anteriores que desean volver a cargar solo los datos sin actualizar la página completa, tuve problemas para cargar los datos correctamente. Sin embargo, noté que cuando voy a otra ruta y luego vuelvo a la corriente, todo funciona bien, pero cuando solo quiero volver a cargar la ruta actual usando
$route.reload()
, parte del código no se ejecuta correctamente. Luego intenté redirigir a la ruta actual de la siguiente manera:y en la configuración del módulo, agregue otro
when
:Y funciona bien para mí. No actualiza toda la página, pero solo hace que el controlador y la plantilla actuales se recarguen. Sé que es un poco hacky, pero esa fue la única solución que encontré.
fuente
var reload = $location.url(); $location.url(''); $timeout(function() { $location.url(reload); });
; No es necesario crear rutas aleatorias. Pero sería interesante ver qué código no reevalúa para usted. Parece que inclusoredirectTo
s y lasresolve
funciones se vuelven a ejecutar de forma normal$route.reload()
(mira el archivo console.log's).y en el controlador
y en el archivo de ruta
Entonces, si la identificación pasada en la url es la misma que la que proviene de la función llamada haciendo clic en el ancla, simplemente vuelva a cargarla, de lo contrario siga la ruta solicitada.
Por favor, ayúdame a mejorar esta respuesta, si esto es útil. Cualquiera, sugerencias son bienvenidas.
fuente
Esto se puede hacer llamando al método reload () del objeto de ventana en JavaScript simple
fuente
Sugeriría consultar la página. Sugerencia oficial
https://docs.angularjs.org/guide/$location
fuente
Esto se puede hacer llamando al método reload () en JavaScript.
fuente