2016-04-26 7 views
3

Aktualisierung Ich habe folgendes Setup:AngularJS Route nicht

ich einen Header-Controller verfügen, die die obere Navigationsleiste der Seite steuert. Bei der Eingabe einer anderen Route möchte ich das Nav-Layout ändern. Das Problem, das ich habe, ist, dass ich die Route aber nur feststellen kann, wenn der Benutzer die Seite aktualisiert.

Beispiel:

<div data-ng-controller="HeaderController" > 
... 
<span>Product Name - {{layout}}</span> 
... 
</div> 

Mein Kopf Controller:

angular.module('myApp.system').controller('HeaderController', ['$scope', 'Global', '$location', '$route', function ($scope, Global, $location, $route) { 
... 

    $scope.layout = $location.path().includes('projectEditor'); 
... 

}]); 

Wenn Sie eine Taste wählen sie eine Seite mit der Route eröffnet: Projekteditor/1. Der Bereich wird jedoch nur aktualisiert, wenn Sie die Seite aktualisieren. Mein Plan war, eine Bedingung für die Klasse zu verwenden, aber es funktioniert nur, wenn der Benutzer die Seite aktualisiert.

Ich benutze 1.5.5 Version von eckigen.

Wie bekomme ich diese Scope-Variable in meinem Header-Controller zu aktualisieren bei Änderung der Route jemand weiß?

Antwort

1

Um zu wissen, wann die Lage ändern, sollten Sie Ereignisse verwenden:

https://docs.angularjs.org/api/ngRoute/service/ # Events $ route

Die Lösung basiert auf der Implementierung ab, die Sie Ihre Anwendung Route verwenden. Hier ist ein Beispiel mit Standard-Winkel Router

$rootScope.$on("$routeChangeStart", function(event, next, current) { 
    $scope.layout = 'newRoute'; 
} 

Ich hoffe, kann es hilft

0

Ok ich es herausgefunden ich brauchte $ routeChangeStart zu verwenden und eine $ routeScope Variable aktualisieren und dann zu, dass befestigen.

Vielen Dank!

Verwandte Themen