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

148
Vistas
Enviar $http.get dos veces

Edición 1: Chicos, me doy cuenta de que llamo a $http.get('/posts') (para algún propósito especial) en mi fábrica de autenticación. Perdón por la estúpida pregunta. Lo eliminaré cuando termine la recompensa.

Tengo el siguiente código para cargar una página https://localhost:3000/#/home , que obtiene todas las publicaciones de la base de datos y las muestra.

El problema es que me doy cuenta de que el registro router.get /posts se imprime dos veces, mientras que here y there solo se alerta una vez.

¿Alguien sabe si significa que $http.get se realiza dos veces? Si es así, ¿dónde está el problema?

 app.config(... ...) { $stateProvider .state('global', { templateUrl: '/htmls/global.html', controller: 'GlobalCtrl' }) .state('global.home', { url: '/home', templateUrl: '/htmls/home.html', controller: 'MainCtrl', resolve: { postPromise: ['posts', function (posts) { return posts.getAll(); }] } }); }]); app.factory('posts', ['$http', 'auth', function ($http, auth) { var o = { posts: [] }; o.getAll = function () { alert("before"); return $http.get('/posts').then(function (res) { alert("after"); angular.copy(res.data, o.posts); }) } ... ... }]); app.controller('GlobalCtrl', [function () { }]); app.controller('MainCtrl', ['$scope', 'posts', 'auth', 'postPromise', function ($scope, posts, auth, postPromise) { ... ...

En el back-end:

 router.get('/posts', function (req, res, next) { console.log("router.get /posts"); Post.find(function (err, posts) { if (err) return next(err); res.json(posts); }); });

PD: Acabo de darme cuenta de una cosa: había configurado un inicio de sesión y un cierre de sesión en el sitio web. Cuando NO estoy conectado, https://localhost:3000/#/home solo se muestra una vez router.get /posts ; el problema surge cuando estoy conectado.

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

0

Dado que está diciendo que cuando inicia sesión, ocurre el problema ... esto se debe al hecho de que, dado que está utilizando angular-ui-router, los dos eventos son muy importantes.

 $stataChangeStart(...) , and $stateChangeSuccesss(...)

Tenga en cuenta que la resolución que está utilizando

 .state('global.home', { url: '/home', templateUrl: '/htmls/home.html', controller: 'MainCtrl', resolve: { postPromise: ['posts', function (posts) { return posts.getAll(); }] } })

se resuelve primero antes de que ocurra el salto a la URL de destino y luego la vista se cambia/actualiza.

Una de las soluciones es:

Asegúrese de tener la condición '&&' para verificarla aquí, ya que está intentando iniciar sesión primero y luego obtener los datos.

Si está utilizando la versión 0.12 del enrutador angular ui, actualice la versión para que se resuelva el problema. Gracias.

about 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