2016-10-03 3 views
0

Es gibt einen Routenparameter, der die aktuelle Site-Sprache darstellt, die im abstrakten app-Status definiert ist.

angular.module("app", ["ui.router"]).config(["$stateProvider", 
    function($stateProvider) { 
    $stateProvider 
     .state('main', { 
     url: '/:lng', 
     abstract: true, 
     template: '<div ui-view></div>' 
     }) 
     .state('main.index', { 
     url: '/', 
     template: '<span>Index</span>' 
     }) 
     .state('main.gallery', { 
     url: '/gallery', 
     template: '<span>Gallery</span>', 

     }) 
    } 
]); 

Vorerst jedes Mal anrufen $state.go, ich habe die lng Eigenschaft auf die Route param Liste hinzuzufügen, wie

$state.go('main.index', { lng: 'en' });

obwohl der aktuelle Wert von lng ist en

Gibt es trotzdem die lng die gleiche wie der vorherige Zustand bleiben, es sei denn, wir ändern es explizit, indem Sie es an die Route-Parameter übergeben Liste?

Antwort

0

Sie können einen Standardwert auf den lng param in Ihrer Statusdefinition hinzufügen:

.state('main', { 
    url: '/:lng', 
    abstract: true, 
    template: '<div ui-view></div>' 
    params: { 
     lng: 'en' 
    } 
    }) 

Weitere Einzelheiten können here

+0

Danke für die Antwort zu finden. Aber ich möchte den Param-Wert des vorherigen Zustands beibehalten, anstatt den Standardzustand zu verwenden. –

+0

Ah, ich entschuldige mich für das falsche Lesen. Warum erstellen Sie nicht einfach einen Wrapper-Service für $ state, indem Sie eine Methode erstellen, die ein params-Objekt akzeptiert und dann $ state.go mit den übergebenen Parametern aufruft und alle ausgelassenen aus $ stateParams für den Zustand, den Sie verlassen, ausfüllt? – kpup