Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

479
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!