2016-10-23 2 views
1


Ich arbeite an einer Chrome-Erweiterung, die einige Inhalte Skript in google.com.au injiziert. Dieses Inhaltsskript lädt dann eine eckige ui router basierte App mit einer kleinen Schnittstelle. Ich verwende $ state ohne URL. Also nur templateUrl und Controller. Das Problem ist, wenn ich $state.go('home') verwende, um auf die Homepage meiner kleinen App zu gehen, ändert $state.go intern den Standort oder die URL z.
(1) :- https://www.google.com.au/#q=hello
zu
(2) :- https://www.google.com.au/#/q=hello (es gibt eine extra/nach q)

die zweite URL ist ungültig eine, die mich zu google.com.au umleiten zurück.
Auch, es ist erwähnenswert, dass - die gleiche App funktionierte gut, wenn ich es in eine verknüpfte Suchergebnisseite injiziert, deren URL drin hatte.

Auch habe ich Varianten wie $state.go und $state.transitionTo mit dem dritten Parameter {location:false ....} probiert. aber es ändert immer noch die URLs wie oben.

Ich bin fest und nicht in der Lage mit der Logik voran zu gehen.
Hier ist ein Screencast des Problems.
http://screencast.com/t/ZrBtlkU3z
Jede Hilfe wird sehr geschätzt.
Vielen Dank im Voraus.

Aktualisieren
Hier ist ein Beispiel für eine Chrome-Erweiterung, die das erwähnte Problem enthält. https://[email protected]/Vikasg7/example-app.git
Bitte laden Sie diese als ausgepackt Erweiterung und versuchen,
https://www.google.com.au/#q=hello
vor und nach dem Laden der Erweiterung zu gehen, um das Problem, das ich oben erwähnt habe, um zu sehen.

Hoffe das hilft Ihnen Experten das Problem zu lösen.

Antwort

0

Ok, nach so viel Forschung und Erfolg. Hier ist der Code, der die URL beim Ändern von Zuständen nicht ändert. Ich musste html5Mode verwenden. Weitere Informationen und Verwendung finden Sie hier.
https://docs.angularjs.org/guide/ $ location # html-Link-Umschreiben
Stackoverflow gibt
AngularJS 1.1.5 - automatically adding hash tag to URLs

angular 
    .module("app", ["ui.router", "app.services", "app.directives", "app.controllers"]) 
    .config(["$stateProvider", "$locationProvider", function ($stateProvider, $locationProvider) { 
    $locationProvider.html5Mode({ 
     enabled: true, 
     requireBase: false, 
     rewriteLinks: true 
    }).hashPrefix("!") 
    }]) 

hoffe, das hilft, jemand schreiben!

0

Ich denke, das ist das beabsichtigte Verhalten von UI-Router. Möglicherweise müssen Sie für diesen einen (window.location.href = 'XXX') oder vielleicht $ Speicherort natives Javascript verwenden, um den Hashbang genau so zu setzen, wie Sie möchten.

+0

Können wir dieses beabsichtigte Verhalten ausschalten? –