2016-04-19 5 views
0

Ich benutze Angular und UI Router. Ich versuche, einen Link auf der Seite zu erhalten, den der Benutzer kopieren und freigeben kann. This thread hat mir gezeigt, dass $state.href ist die Funktion, die ich suche, aber es erzeugt nicht die richtige Verbindung.

Ein wichtiges Detail hier ist, dass der Stamm meiner Anwendung nicht die Wurzel der Domäne ist. In diesem Fall lautet die Domäne localhost, aber der Stamm der eckigen App lautet localhost/dev/app/.

Hier ist der Befehl, den ich in meinem Controller verwende.

$scope.url = $state.href('survey', { survey: "asd" }, {absolute: true}); 

In meinem app.js, wird die folgende Route erklärt:

.state('survey', { 
    url: "/:survey/survey?ao", 
    templateUrl: "views/survey/survey.html", 
    controller: "surveyController", 
    }, 
    data: { 
     requireLogin: false, 
     requireAdmin: false 
    }}) 

Diese http://localhost/dev/app/#/asd/survey zurückkehren sollte, es gibt stattdessen http://localhost/#/asd/survey.

(Das Besondere daran ist, dass ui-sref="survey({survey: "asd"}) auf den richtigen Link nicht übersetzen.)

Gibt es eine Möglichkeit ich dieses Problem beheben kann, so erhalte ich die vollständige URL?

Antwort

1

Hinzufügen eines base Tag meiner App-Seite hat dieses Problem für mich gelöst. Es definiert die Basis-URL für die Seite mit den Routerreferenzen. Aus Gründen der Legacy-Unterstützung bin ich auf Version 0.2.15 von Angular UI Router. Ich weiß nicht, ob dies für aktuellere Versionen noch notwendig ist.

<base href="http://localhost/dev/app/" /> 
0

Sie hatten eine zusätzliche '},' in nach Controller, vielleicht ist das Chaos Dinge? Auch wenn Sie Parameter vorbei sind möchten Sie vielleicht gehört, dass als params Linie:

params: { 
    survey: null 
} 

auch, wenn Sie die URL http://localhost/dev/app/#/asd/survey Ihre URL wollen sein sollte:

url: "dev/app/:survey/asd/survey"