Angular $ routeParams gibt ein leeres Objekt zurück

8

Ich habe einen Tag lang an einem Problem festgemacht, das ich nicht durchschauen kann.

Ich habe den folgenden Code in einer users.js.coffee-Datei:

%Vor%

Warum sollte $ routeParams ein leeres Objekt sein? Wenn ich $ route.current.params in einer Ansicht aufruft, werden die entsprechenden Parameter angezeigt. Aber nicht im Controller. Außerdem kann ich $ route.current.params nicht im Controller aufrufen, weil "current" noch nicht definiert ist.

    
jflores 14.03.2013, 03:30
quelle

4 Antworten

7

Ich hatte das gleiche Problem. Das Routing funktioniert nicht, wenn keine ng-view vorhanden ist. Hatte nur eine ng-view Sie erhalten Ihre $ routeParams.

Grüße

    
Yop44 28.06.2013 20:10
quelle
2

Wenn Sie einen externen Controller für den gerouteten ng-view-Controller verwenden (wie eine Topbar oder einen Seiten-Controller), müssen Sie die "$ routeChangeSuccess" -Emitter-Nachricht abonnieren.

Der Erfolg der Routenänderung ist asynchron, wenn Sie nicht der empfangende Controller sind. Diese SO Antwort gibt eine vollständigere Antwort: $ routeParams ist im Hauptcontroller leer

aber das ist der Tldr;

%Vor%     
David Merritt 12.11.2014 00:07
quelle
1

Es sieht so aus, als wäre $ routeParams zur Controller-Initialisierungszeit für Controller außerhalb der über $ routeProvider / ng-view gerouteten nicht verfügbar. (Mindestens in Winkel 1.0.8)

Wenn Sie auf die Routenparameter in diesen äußeren Controllern zugreifen möchten, können Sie $location.search().<param_name>

verwenden     
Amir 28.05.2014 01:02
quelle
0

Ihre Routen zeigen auf Ihre api-Route. Sie sollten stattdessen ein Pfad zu der Vorlage sein, um rendern zu können:

%Vor%

Nehmen wir an, Ihr Benutzer-Index-Controller würde wahrscheinlich wie folgt aussehen:

%Vor%

Sie müssen $ http nicht injizieren, da Sie bereits die ngResource-REST-Abstraktion verwenden.

    
Wojtek Augustynski 03.06.2013 02:56
quelle

Tags und Links