2015-03-03 12 views
16

Yani bu genel bir problem gibi görünüyor ama kesin bir cevap bulamadım.UI-router opsiyonel param, eğik çizgi olmadan yanıyor

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

ben id opsiyonel olmak istiyorum: Temelde bir devlet var.

Tabii

example/ 
example/1234 

maçları Ama bölü çizgisi ile bitmeyen eşleşmiyor.

example 

Ben $urlMatcherFactoryProvider.strictMode(false); çalıştı, ancak bu durum için çalışmak görünmüyor. example?param=1234 kullanabilirdim, ancak temiz sürümü tercih ederim.

Bunun çalışması için ikinci bir durumu tanımlamam gerekiyor mu?

cevap

35

İsteğe bağlı URL parametrelerini, bu gibi params nesnesinde varsayılan bir değer vererek tanımlayabilirsiniz. squash, parametrenin, tanımlanmamışsa bağlantılarda gizlenmesini sağlar.

.state('users', { 
     url: '/example/:id', 
      templateUrl: 'angular-views/example.html', 
      controller: 'ExampleCtrl', 
      params: { 
       id: { 
        value: null, 
        squash: true 
        } 
       } 
     }); 

Bunu yerel olarak denedim ve sondaki eğik çizgiden bağımsız olarak Tamam çalışıyor gibi görünüyor.

+0

Benim için çalışmıyor. Plz Demoyu görün https://plnkr.co/edit/3aBchxk2nu6FiDrV3WNN?p=preview ... Bu squash'ı kullandım ama hala Post 1 kertenkeleden dolayı iyi çalışıyor ama Post 2 hiç çalışmıyor – Sami

+0

@Sami Emin değilim Bu çoklu squashable params ile çalışacaktır. – Casey

+0

Ama 'state' yerine' href' kullanırken tek param için bile çalışmıyor. Plz bkz. Https://plnkr.co/edit/3aBchxk2nu6FiDrV3WNN?p=preview – Sami

İlgili konular