2014-02-22 4 views
7

AngularJS + ui-Router verwenden, muss ich mit einem von zwei Wörtern eine URL zum Spiel:Passende das eine oder andere Wort in AngularJS ui-Router

dh /oneWord/... oder /secondWord ...

Das Routing und Controller sind fast identisch, daher möchte ich Code vermeiden.

jedoch mit einem regex ich gewohnt bin, funktioniert nicht, wo reguläre Ausdrücke funktionieren sollte:

url: '/{type:(oneWord|secondWord)}/:group',

Allerdings wirft es einen Fehler:

Unbalanced capture group in route '/{type:(oneWord|secondWord)}/:group'

Ein Regex sollte jedoch funktionieren, weil dies gut funktioniert:

url: "/{page:[0-9]{1,8}}"

Ich weiß, dass (oneWord|secondWord) eine gültige Regex ist, was habe ich verpasst?

Antwort

23

Gemäß der documentation sollten Sie keine auffangenden Klammern in Ihren Regex-Mustern verwenden.

sollte diese Arbeit: url: '/{type:(?:oneWord|secondWord)}/:group'

+0

ich völlig verfehlt, dass ich das auch nur den anderen Tag lesen. Vielen Dank. Wird die Antwort akzeptieren, wenn die Seite es mir erlaubt. – helion3

+0

Irgendwelche Vorschläge, auf der Regex, wenn das zweite Wort null ist? Kann es 'url sein: '/ {typ :(?: oneWord | null)} /: group'' –

+0

was wird die Regex für einen Parameter sein, der nicht mit' oneWord' übereinstimmen sollte? – Vivek

Verwandte Themen