AngularJS – ¿Cómo puedo hacer una redirección con un total de carga de la página?

Quiero hacer una redirección que hace un total recargar la página para que las cookies de mi servidor web se actualizan cuando se carga la página. window.location = "/#/Next" y window.location.href = "/#/Next" no trabajan, que hacen un Angular de la ruta que no entra en el servidor.

¿Cuál es la forma correcta de hacer una petición al servidor dentro de un Angular de la controladora?

  • ¿alguna vez resolver esto?
  • ¿alguna vez resolver esto?
  • ¿alguna vez resolver esto?
  • ¿alguna vez resolver esto?
  • ¿alguna vez resolver esto?
  • ¿alguna vez resolver esto?
  • ¿alguna vez resolver esto?
  • marque esta stackoverflow.com/a/50987755/6868227
  • Con un simple JS esto funciona en FF y Chrome: documento.ubicación.asignar(<url>); ubicación.reload(true);
  • ¿alguna vez resolver esto?

InformationsquelleAutor Mike Pateras | 2013-04-14

5 Kommentare

  1. 182

    Para <a> etiquetas:

    Usted necesita pegarse target="_self" en su <a> etiqueta

    Hay tres casos donde AngularJS llevará a cabo un completo recarga de la página:

    • Enlaces que contienen el elemento de destino

      Ejemplo: <a href="/ext/link?a=b" target="_self">link</a>
    • Enlaces absolutos que ir a un dominio diferente

      Ejemplo: <a href="http://angularjs.org/">link</a>
    • Enlaces que empiezan con ‘/’ que conducen a una base diferente de la trayectoria cuando la base se define

      Ejemplo: <a href="/not-my-base/link">link</a>

    Con javascript:

    La $location servicio le permite cambiar sólo la URL; no permitir que vuelva a cargar la página. Cuando usted necesita para cambiar la dirección URL y volver a cargar la página o navegar a otra página, por favor, utilice un nivel inferior de la API: $window.location.href.

    Ver:

    • Estoy haciendo esto en un controlador, no en html.
    • $ventana.ubicación.href hace lo mismo que de la ventana.ubicación.href hace. Estoy bastante seguro de $ventana es sólo un servicio de envoltorio para la ventana. De cualquier manera ambos hacen un Angular de la ruta en lugar de la actualización de la página completa.
    • $ventana.ubicación.href definitivamente las causas de una actualización de la página completa, lo estoy haciendo en mi aplicación.
    • A partir de la documentación en $ubicación: «¿Qué no hacer? No causa una página completa a cargar cuando la URL del navegador se cambia. Para volver a cargar la página después de cambiar la dirección URL, usar el nivel inferior de la API, $ventana.ubicación.href.»
    • He leído lo mismo. No funciona en la versión actual de Chrome. Hace un Angular de la ruta.
    • Estoy usando AngularJS 1.0.6 con la más reciente de Chrome, es un gran trabajo. ¿Qué versión de la AJS te encuentras?
    • 1.0.6 de la CDN. Estoy haciendo esto dentro de un $http.post éxito de devolución de llamada, si que importa, aunque yo lo he probado fuera de la devolución de llamada y conseguido los mismos resultados. Si tengo que hacer la redirección a «/» (que tengo un Angular de la ruta definida para así), funciona con la actualización de la página completa, pero «/#/Siguiente» solo hace el cambio de vista.
    • Podría ayudar a que, si se juntan un JSfiddle para la inspección, y la actualización de su pregunta. Yo no puedo reproducir el problema.
    • ¿has probado location =location.href+ "/#next" ? o adecuado variación que tiras de cualquier hash
    • Mismo resultado. Angular de la ruta.
    • ¿meta no-cache etiqueta? Me parece muy extraño que angular es interceptar window.location
    • <a href="..." target="_self"> es lo que ha funcionado para mí. gracias !
    • ubicación.href solo no funciona si es que la misma url con sólo hash diferentes.
    • A nadie pegado, la destinationUrl debe contener la http:// prefijo, o se va a abrir ww.yourcurrenturl.com/destinationurl
    • yo no podía conseguir ninguna de ellas funciona, hasta que traté de destino _self opción mencionada anteriormente.
    • Usted es un protector de la vida tio! Yo estaba atrapado en él durante días. Muchas gracias
    • Es allí una manera de hacer el análogo de <a href="/link" target="_self"> pero en javascript? He intentado utilizar la ventana y $ventana, pero siempre va a un Angular de la ruta (yo estoy usando html5mode). Quiero ir a http://www.my-app-base-url/link el envío de la solicitud para el servidor.

  2. 32

    Hemos tenido el mismo problema, trabajando desde el código JS (es decir, no de anclaje HTML). Esto es cómo hemos resuelto que:

    1. Si es necesario, prácticamente alterar la URL de la página actual a través de $location servicio. Esto puede ser útil si su destino es sólo una variación en la dirección URL actual, de modo que usted puede tomar ventaja de $location métodos auxiliares. E. g. corrimos $location.search(..., ...) con sólo cambiar el valor de una cadena paramater.

    2. Construir la nueva URL de destino, utilizando los actuales $location.url() si es necesario. Para funcionar, este nuevo había que incluyen de todo, después de esquema, el dominio y el puerto. Así por ejemplo, si desea mover a:

      http://yourdomain.com/YourAppFolder/YourAngularApp/#/YourArea/YourAction?culture=en

      a continuación, debe configurar la dirección URL como en:

      var destinationUrl = '/YourAppFolder/YourAngularApp/#/YourArea/YourAction?culture=en';

      (con el líder '/' así).

    3. Asignar nuevas URL de destino en de bajo nivel: $window.location.href = destinationUrl;

    4. Fuerza recargar, aún en los de bajo nivel: $window.location.reload();

    • Esto no funciona para mí Angular 1.3.1 con Chrome 38. El valor de $ventana.ubicación.href no cambia cuando se le asigna una ruta o una dirección URL completa. Sólo $ventana.ubicación.asignar() trabajó para mí.
    • Teniendo los mismos problemas como Félix, resuelto de una manera diferente stackoverflow.com/questions/31137809/…
  3. 12

    Después de buscar y dar golpe y de la sesión de prueba de que soy capaz de solove por primera especificando la url como

    $window.location.href = '/#/home/stats';

    a continuación, volver a cargar

    $window.location.reload();
    • Esto parece solucionar el problema, pero al hacer clic en atrás y adelante en el navegador hará que un montón de incoherencias.
  4. 9

    He tenido el mismo problema. Cuando yo uso window.location, $window.location o incluso <a href="..." target="_self"> la ruta no actualizar la página. Así que el caché de los servicios utilizados que no es lo que quiero en mi aplicación. Lo resolvió mediante la adición de window.location.reload() después de window.location a la fuerza de la página para volver a cargar después de enrutamiento. Este método se parece a la carga de la página dos veces, aunque. Podría ser un truco sucio, pero hace el trabajo. Así es como lo tengo ahora:

      $scope.openPage = function (pageName) {
          window.location = '#/html/pages/' + pageName;
          window.location.reload();
      };

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea