2016-07-25 8 views
0

ich eine Route haben:

$stateProvider.state('keeper.telepay.category', { 
    url: '/category-{id}/country-{cid}/region-{rid}' 
} 

In allen Fällen, wenn ich $ mit dieser Strecke state.go verwenden, möchte ich loswerden auf 'alle' ändern wenn es Wert '0' ist, so mein url'll wie seine

/Kategorie-1/Land-195/Region-all

ich habe versucht, es in $ rootScope zu tun. $ auf ('$ stateChangeStart'), aber ohne Glück. Irgendwelche Vorschläge || Richtungen würden sehr geschätzt werden.

UPDATE

Hier ist, was ich auf $ state versucht haben:

$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){ 
    if(toState.name == 'keeper.telepay.category' && toState.params.rid == 0) { 
     toState.params.rid = 'all'; 
    } 
} 
+0

Sollten Sie wahrscheinlich das, was Sie versucht haben, in '$ rootScope. $ On ('$ stateChangeStart') posten, weil das die Leute vorschlagen werden. – KreepN

+1

Vielleicht können Sie eine Testversion mit [$ urlMatchFactory] (http://angular-ui.github.io/ui-router/site/#/api/ui.router.util.$urlMatcherFactory) starten, um Ihren eigenen Param-Typ zu erstellen . – MMhunter

+0

Guter Vorschlag, thx – Kindzoku

Antwort

1

Accidently ich zu diesem Link http://angular-ui.github.io/ui-router/feature-1.0/interfaces/params.paramdeclaration.html#squash

gestolpert also die reine Lösung ist:

$stateProvider.state('keeper.telepay.category', { 
    url: '/category-{id}/country-{cid}/region-{rid}', 
    params: { 
     cid: '195', 
     rid: { 
      value: '0', 
      squash: "all" <-- do the trick 
     } 
    } 
}); 

Und hier ist die Beschreibung:

Konfiguriert, wie ein Standardparameterwert in der URL dargestellt wird, wenn der aktuelle Parameterwert dem Standardwert entspricht.

Es gibt drei Squash-Einstellungen:

falsch: Der Standardwert des Parameters nicht zerquetscht wird. Es ist codiert und in der URL enthalten

true: Der Standardwert des Parameters ist in der URL weggelassen. Wenn der Parameter in der url-Deklaration des Status vorangestellt wird und Schrägstriche folgen, wird einer dieser Schrägstriche weggelassen. Dies kann sauberere URLs ermöglichen.

"beliebige Zeichenfolge": Der Standardwert des Parameters wird durch einen beliebigen Platzhalter Ihrer Wahl ersetzt.