2015-03-03 17 views
16

Das scheint also ein häufiges Problem zu sein, aber ich habe keine definitive Antwort gefunden. Im Prinzip habe ich einen Zustand:ui-router optionaler Parameter ohne Schrägstrich

.state('users', { 
    url: '/example/:id', 
     templateUrl: 'angular-views/example.html', 
     controller: 'ExampleCtrl' 
    }) 

Ich möchte id optional sein.

Sicher, sie paßt

example/ 
example/1234 

Aber es entspricht nicht ohne Slash am Ende.

example 

Ich versuchte $urlMatcherFactoryProvider.strictMode(false);, aber das scheint nicht für diesen Fall zu arbeiten. Ich könnte example?param=1234 verwenden, aber ich bevorzuge die sauberere Version.

Muss ich wirklich einen zweiten Zustand definieren, damit dies funktioniert?

Antwort

35

Sie können optionale URL-Parameter definieren, indem Sie ihnen im Objekt params einen Standardwert zuweisen. squash wird den Parameter in Verknüpfungen ausblenden, wenn es nicht definiert ist.

Ich versuchte dies lokal und es scheint OK zu funktionieren, ungeachtet des abschließenden Schrägstrichs.

+0

Funktioniert nicht für mich. Plz Siehe die Demo https://plnkr.co/edit/3aBchxk2nu6FiDrV3WNN?p=preview ... Ich habe diesen Squash aber immer noch Post 1 funktioniert gut wegen der folgenden Schrägstriche, aber Post 2 funktioniert überhaupt nicht – Sami

+0

@Sami bin ich mir nicht sicher Dies funktioniert mit mehreren zerlegbaren Parametern. – Casey

+0

Aber es funktioniert nicht einmal für einzelne Parameter, wenn 'href' anstelle von' state' verwendet wird. Plz siehe https://plnrkr.co/edit/3aBchxk2nu6FiDrV3WNN?p=preview – Sami

Verwandte Themen