div javascript angularjs node.js reload rerender

javascript - div - Cómo volver a cargar o volver a renderizar toda la página utilizando AngularJS



refresh div angular 4 (13)

Después de representar toda la página en función de varios contextos de usuario y de haber realizado varias solicitudes de $http , quiero que el usuario pueda cambiar de contexto y volver a renderizar todo (reenviando todas las solicitudes de $http , etc.). Si simplemente redirecciono al usuario a otro lugar, las cosas funcionan correctamente:

$scope.on_impersonate_success = function(response) { //$window.location.reload(); // This cancels any current request $location.path(''/''); // This works as expected, if path != current_path }; $scope.impersonate = function(username) { return auth.impersonate(username) .then($scope.on_impersonate_success, $scope.on_auth_failed); };

Si uso $window.location.reload() , entonces algunas de las solicitudes $http en auth.impersonate(username) que están esperando una respuesta se cancelan, por lo que no puedo usar eso. Además, el hack $location.path($location.path()) tampoco funciona (no pasa nada).

¿Hay otra forma de volver a representar la página sin emitir manualmente todas las solicitudes de nuevo?


Bueno, tal vez olvidó agregar "$ ruta" al declarar las dependencias de su controlador:

app.controller(''NameCtrl'', [''$scope'',''$route'', function($scope,$route) { // $route.reload(); Then this should work fine. }]);


He tenido una dura lucha con este problema durante meses, y la única solución que me funcionó es la siguiente:

var landingUrl = "http://www.ytopic.es"; //URL complete $window.location.href = landingUrl;


Intenta lo siguiente:

$route.reload(); // don''t forget to inject $route in your controller $window.location.reload(); location.reload();


La solución más fácil que pensé fue,

agregue ''/'' a la ruta que desea volver a cargar cada vez que regrese.

p.ej:

en lugar de lo siguiente

$routeProvider .when(''/About'', { templateUrl: ''about.html'', controller: ''AboutCtrl'' })

utilizar,

$routeProvider .when(''/About/'', { //notice the ''/'' at the end templateUrl: ''about.html'', controller: ''AboutCtrl'' })


Obtuve este código de trabajo para eliminar el caché y volver a cargar la página

Ver

<a class="btn" ng-click="reload()"> <i class="icon-reload"></i> </a>

Controlador

Inyectores: $ scope, $ state, $ stateParams, $ templateCache

$scope.reload = function() { // To Reload anypage $templateCache.removeAll(); $state.transitionTo($state.current, $stateParams, { reload: true, inherit: true, notify: true }); };


Para el registro, para forzar a angular a volver a renderizar la página actual, puede usar:

$route.reload();

Según la documentation AngularJS:

Hace que el servicio $ route recargue la ruta actual incluso si $ location no ha cambiado.

Como resultado de eso, ngView crea un nuevo alcance, reinstala el controlador.


Para volver a cargar la página para una ruta determinada:

$location.path(''/path1/path2''); $route.reload();


Si desea actualizar el controlador al mismo tiempo que actualiza los servicios que está utilizando, puede utilizar esta solución:

  • Inyectar $ estado

es decir

app.controller(''myCtrl'',[''$scope'',''MyService'',''$state'', function($scope,MyService,$state) { //At the point where you want to refresh the controller including MyServices $state.reload(); //OR: $state.go($state.current, {}, {reload: true}); }

Esto actualizará el controlador y el HTML, así que puede llamarlo Actualizar o Volver a generar .


Si está utilizando un enrutador ui angular, esta será la mejor solución.

$scope.myLoadingFunction = function() { $state.reload(); };


Solo para recargar todo, use window.location.reload (); con angularjs

Echa un vistazo a ejemplo de trabajo

HTML

<div ng-controller="MyCtrl"> <button ng-click="reloadPage();">Reset</button> </div>

angularJS

var myApp = angular.module(''myApp'',[]); function MyCtrl($scope) { $scope.reloadPage = function(){window.location.reload();} }

http://jsfiddle.net/HB7LU/22324/


Utilice el siguiente código sin una notificación de recarga íntima para el usuario. Se renderizará la página.

var currentPageTemplate = $route.current.templateUrl; $templateCache.remove(currentPageTemplate); $window.location.reload();


$route.reload() reinicializará los controladores pero no los servicios. Si desea restablecer todo el estado de su aplicación, puede utilizar:

$window.location.reload();

Este es un método estándar de DOM al que puede acceder inyectando el servicio $window .

Si desea asegurarse de volver a cargar la página desde el servidor, por ejemplo, cuando está usando Django u otro marco web y desea una nueva representación del lado del servidor, pase true como parámetro para reload , como se explica en la documentación . Como eso requiere interacción con el servidor, será más lento, así que hágalo solo si es necesario

Angular 2

Lo anterior se aplica a Angular 1. No estoy usando Angular 2, parece que los servicios son diferentes allí, hay Router , Location y el DOCUMENT . No probé diferentes comportamientos allí


Antes de Angular 2 (AngularJs)

Por la ruta

$route.reload();

Si quieres volver a cargar la aplicación completa.

$window.location.reload();

Angular 2+

import { Location } from ''@angular/common''; constructor(private location: Location) {} ngOnInit() { } load() { this.location.reload() }

O

constructor(private location: Location) {} ngOnInit() { } Methods (){ this.ngOnInit(); }