Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

490
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda