2016-07-09 14 views
1

Ich habe einen Zustand, der der Einstiegspunkt für meine Anwendung ist. Die Einstiegsseite benötigt jedoch einen Datumsparameter, um eine Liste anzeigen zu können. Es ist so konfiguriert, dass das aktuelle Datum verwendet wird, wenn in der URL kein Datum angegeben wurde.UI-Router: Default-Wert für Parameter nicht in URL angezeigt

Technisch funktioniert alles. Der Standardwert wird an den Controller übergeben, und der Controller kann ihn zum Laden einiger Daten verwenden. Das Datum wird jedoch nicht in der URL angezeigt.

Dies ist der Zustand Konfiguration:

$stateProvider.state('openJobs', { 
     controller: 'openJobsCtrl as openJobs', 
     params: { 
     shippingDate: { 
      value: getFormattedCurrentDate(), 
      squash: false 
     } 
     }, 
     templateUrl: 'openJobs.html', 
     url: '/openJobs/:shippingDate' 
    }); 

Ich habe eine Arbeits plunkr geschaffen, das Verhalten zeigen (durchgeführt in einem neuen Fenster URL Änderungen zu sehen). Der Standardwert wird in der URL angezeigt, wenn ich eine ui-sref Verknüpfung zu openJobs erstelle. Wenn jedoch jemand die Seite direkt durch Eingabe von http://host.com/openJobs/ öffnet, wird der Standardwert im Hintergrund verwendet, aber nicht in der URL angezeigt.

Wie erreiche ich das, egal wie der Status geöffnet wurde, wird der Standardwert in der URL angezeigt?

Antwort

3

Sie können den eingehenden Pfad umleiten, indem Sie urlRouterProvider mit dem daran angehängten Standarddatum verwenden. urlRouterProvider aktualisiert den Speicherort des Browsers.

$urlRouterProvider.when("/openJobs/", function() { 
     return "/openJobs/" + getFormattedCurrentDate(); 
    }); 

Wenn ein Staat gegen Staat Namen angepasst ist (durch ui-sref oder $state.go()), Browser-Standort wird mit url Pfad aktualisiert werden.

Wenn dagegen ein Status mit dem Pfad url abgeglichen wird, wird der Browserstandort nicht aktualisiert, da er bereits mit der url übereinstimmt. Deshalb müssen Sie in Ihrem Fall $urlRouterProvider verwenden, um das Datum anzufügen.

+0

Danke, hat gut funktioniert. – Ahatius