2014-07-03 12 views
7

Das ist mir bei zwei meiner Projekte, in denen ich AngularJS verwende, aufgefallen, also nehme ich an, dass es ein Problem mit AngularJS ist .AngularJS wird die Seite nicht aktualisieren, wenn der angeklickte Link dieselbe URL hat wie die aktuelle Seite

Nehmen wir an, ich habe eine Schaltfläche im Menü, die "Registrieren" sagt und mich zur/account/register Seite bringt. Wenn ich jedoch auf der Seite/account/register bin, wird durch Klicken auf die Schaltfläche die Seite nicht aktualisiert. Es ist so, als wäre die Schaltfläche deaktiviert. Dies geschieht immer dann, wenn der Link, auf den ich klicken möchte, dieselbe URL hat wie die aktuelle Seite, auf der ich bin. Die URLs sind einfach <a href="something1/something2">Link</a>. Wie kann ich dieses Verhalten entfernen?

+0

Sie Seite aktualisieren wollen? –

+0

Ich möchte nur, dass der Link anklickbar ist, auch wenn es bedeutet, dass er mich auf die gleiche Seite wie den aktuellen bringt. – Andrej

Antwort

1

Sie können prüfen, ob die aktuelle URL/der Status/Hash "/ account/register" ist ... wenn ja, dann verwenden Sie die Reload-Methode des Dienstes $ route.

AngularJs: Reload page

+0

Der Registerlink, von dem ich spreche, befindet sich nicht in einem Angular Controller, es ist nur ein Link im Menü. Aber es ist unter ng-app. Dies passiert auch, wenn die Verbindung unter einem Winkel-Controller ist. – Andrej

+0

Dann müssen Sie möglicherweise das Ereignis "locationchangestart" des Diensts $ route abhören. Können Sie bitte ein Beispiel-Snippet einfügen? – Saurav

+1

Ich verwende weder $ routeProvider noch $ locationProvider, es ist keine einzelne Seite Anwendung. – Andrej

0

ich fand keine vernünftige Art und Weise den Weg Innenansicht zu überprüfen, aber dies könnte funktionieren:
Ansicht:

<a link-href="path/to/same/location">same location</a> 

Richtlinie:

app.directive('linkHref', ['$location', '$route', function ($location, $route) { 
    return { 
    restrict: 'A', 
    link: function ($scope, $element, $attrs) { 
     $element.bind('click', function() { 
     if ($location.$$url == $attrs.activeLink) { 
      $route.reload(); 
     } else { 
      $location.path($attrs.activeLink); 
     }); 
    } 
    }; 
}]); 
0

Ich hatte das gleiche Problem und fand, dass, wenn ich $ Standort entfernte (wurde irgendwie nicht benutzt), der in verzeichnet wurde In einer Fabrik ging das Problem weg.

6

Hatte das gleiche Problem mit eckigen, Hinzufügen target="_parent" Attribut der Link hat es funktioniert.

+2

Verifiziert mit AngularJS v1.4.7. Dies behebt genau das gleiche Problem, das ich in meiner Navigationsleiste hatte, die in allen meinen Seiten über 'ng-include' enthalten ist. – DondeEstaMiCulo

+1

hat auch für mich funktioniert – jkb016

0
<a target="_self" href="/xxxxxxx"></a> 

wird dieses Problem beheben

1

Für die nicht verstanden, ich habe meinen Bildschirm aufgezeichnet dieses Problem anzuzeigen. Grundsätzlich gibt es etwas falsch von Angular.

Zone not loaded

  1. Wenn wir legen Sie die Navigation außerhalb des ng-App.
  2. Die App wurde bereits geladen.
  3. Dann klicken wir wieder auf diese Navigation.
  4. Die App wird ohne Grund verschwinden.

Ich reparierte es, indem ich target="_parent" oder target="_self" Attribut dem Anker Tag wie oben beantwortet hinzufügen.

abfragen auf Angular docs

Verwandte Themen