Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

487
Vistas
La página se queda en blanco después de cargar la URL con $ routeProvider en AngularJS

Tengo problemas para evitar que una de mis páginas quede en blanco después de actualizar mi navegador.

Cuando un usuario visita /user/:username , se carga profile.html . Funciona según lo previsto en la primera carga, pero si actualizo la página, me queda una salida JSON sin procesar en la pantalla (anteriormente, solo decía " null ").

Para más contexto, tengo un ng-href en mi archivo home.html :

 <h3>View your profile page <a ng-href="/user/{{user.username}}">here</a>.</h3>

El archivo angular correspondiente:

 var app = angular.module('social', ['ngRoute', 'ngCookies']) app.config(function($routeProvider, $locationProvider) { $routeProvider .when('/', { templateUrl: 'home.html', controller: 'HomeController' }) .when('/login', { templateUrl: 'login.html', controller: 'LoginController' }) .when('/signup', { templateUrl: 'signup.html', controller: 'SignupController' }) .when('/user/:username', { templateUrl: 'profile.html', controller: 'UserProfileController' }) $locationProvider.html5Mode(true)

})

Mi controlador:

 app.controller('UserProfileController', function($http, $scope, $cookies, $rootScope, $routeParams) { console.log("$cookies.get('currentUser')") console.log($cookies.get('currentUser')) function getCurrentUser() { $http.get('/user/' + $routeParams.username).then(function(res) { console.log('res.data in the user profile controller') console.log(res.data) $scope.user = res.data }) } if ($cookies.get('currentUser') != undefined) { getCurrentUser() } else { console.log("No one is here.") }

})

Conseguí que esto funcionara eliminando $locationProvider.html5Mode(true) y usando ng-href="#/user/{{user.username}}" , lo que significa que no se pierden datos al actualizar la página, y yo no obtener una pantalla en blanco. Pero, el problema es que el # aparece en la URL, lo que eventualmente no querré. Obviamente, si envío una aplicación como esta a producción, no quiero que aparezca el # en la URL. Si tiene que ser su durante el desarrollo, puedo vivir con eso.

También debo señalar que solo tengo este problema con /user/:username . Todas mis otras rutas ( / , /login y /signup ) funcionan como se esperaba, lo que significa que las páginas no quedan en blanco después de una actualización y todos los datos persisten debido al uso de cookies.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

AngularJS almacena sus datos en la memoria, por lo que cuando actualice la página perderá los datos, es por eso que su página se quedó con expresiones sin procesar porque angularr perdió los datos necesarios para los enlaces.

Puede usar las resoluciones de route resolves para obtener los datos necesarios para cada ruta, de modo que cuando actualice la página, angular llamará a la función de resolución para esa ruta que devolverá los datos al controlador.

La ruta se resuelve en Angular

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda