2016-10-28 4 views
0

Ich erstelle einen Zeitplan für eine Convention und möchte die URL während der Convention-Zeit ändern lassen. Wenn der Benutzer die Seite am Samstag der Conversion lädt, sollte die URL zu [URL]? Tag = Samstag wechseln. (Die URL ändert sich auch, wenn der Benutzer einen anderen Tag anzeigt.)Angular Change URL beim Laden der Seite

Ich renne in eine Problem beim laden der Seite nur, wo die history.replaceState

angular.js:13920 Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting! 

so kam ich auf einem Forum verursacht, die so etwas wie

$location.path('/').search('day='+day).replace(); 

zu verwenden, sagt Aber es kommt als

/#/?day=saturday 

Ich möchte nicht das/# in der URL. Also habe ich Foren gefunden, die erklären, $ locationProvider zu verwenden.

ich auch in der

app.config(function($locationProvider) { 
    $locationProvider.html5Mode(true); 
}) 

hinzugefügt Und es sagt noch $ locationProvider nicht definiert ist. Ich weiß nicht, was ich falsch mache, oder ob das überhaupt die richtige Richtung ist. Ich möchte nur den? Tag = Tag_hier ändern, wenn die Seite geladen wird und wenn der Benutzer klickt, um den Tag zu ändern.

Antwort

0

Erfassen Sie die Routenänderung auf Klick, wenn Sie die URL routen und ersetzen. Für die Fehler Verwendung und die Syntax scheint

.config(function($locationProvider) { 
    $locationProvider.html5Mode(true).hashPrefix('!'); 
}) 

Recht zu sein, aber wenn Sie die URL Änderung bestehen bleiben wollen, müssen Sie die Änderungen zu tun haben, in der routeChange url

.run(function($rootScope, $location) { 
    $rootScope.$on('$routeChangeStart', function(next, current) { 
    //... you could trigger something here like replacing the actual url ... 
    //$location.path('/').search('day='+day).replace(); 
}); 
}) 

Alternativ können Sie auch Blick auf https://github.com/angular-ui/ui-router als Alternative und tun, um die Änderungen zu $ ​​location.url(). replace() in onEnter oder lösen Optionen staatlicher Definition https://github.com/angular-ui/ui-router/wiki

Wenn Sie ngRouter und noch immer der Fehler ein plunkr Code für Demo verwenden möchten wird sicherlich helfen besser debuggen.

+0

Dies funktioniert zum größten Teil. Wenn der Benutzer jedoch auf den Namen des Ereignisses klickt, navigiert er nicht wie gewohnt zur Ereignisseite. Es ändert nur die URL. – pinksharpii

+0

Ist der Name des Ereignisses eine Seite/Route in Ihrer Anwendung? Wenn ja, was ist der Fehler, den Sie bekommen? Es muss ein Blockierungsskript geben, das die Seitenroute blockiert. Können Sie den Code für den routeChangeStart, den Sie verwenden, verwenden? Vorzugsweise sollte ein einfacher Plnkr gut sein. – Gary

Verwandte Themen