2013-01-18 33 views
5

Backbone 0.9.10'da yönlendirme kurmaya çalışıyorum.İsteğe bağlı rota parametreleri Backbone.js içinde mi? (tekrar)

    : Ben iki sorun var

    var AppRouter = Backbone.Router.extend({ 
        routes: { 
        "": "index", 
        "(/:country)": "index", 
        "(/:country)(/:city)": "index" 
        }, 
        index: function(country, city) { 
         console.log('index', country, city); 
        } 
    }); 
    var StateApp = new AppRouter(); 
    Backbone.history.start({ pushState: true }); 
    

    : Bu şu anda benim yönlendirici içinde ne var

    /england/ 
    /england/birmingham 
    /france 
    /france/paris 
    ... 
    

    vb: Aşağıdaki türden yolları eşleşecek istiyorum

  1. 'index' işlevi şu anda hiç çalışmıyor, URL'im ne olursa olsun = /, /england veya başka bir şey.
  2. Ayrıca, isteğe bağlı parametrelerin onları ayarladığım şekilde çalışıp çalışmayacağı da açık değil - böyle bir satırda iki isteğe bağlı parametrenin olması sorun değil mi? Henüz desteklemem gereken ülke sayısını bilmiyorum, bu yüzden tek tek ülkeleri belirtmek yerine country parametresinin bir parametre olmasını istiyorum.

Mümkünse düzenli URL yönlendirmeyi düzenli ifadeden daha çok kullanmayı tercih ederim. Her iki parametreler isteğe bağlı olduğundan, bu maç olacak

routes: { 
    "(:country)(/:city)": "index" 
} 

: İsterseniz

cevap

14

, sizin örnekte olduğu gibi, bir yönteme rota (root dahil) tüm URL'ler için, tek ihtiyacı bir yönü tanımlamak için :

  • "" (Boş dize)
  • "ingiltere"
  • "İngiltere/Londra"

değil kök sayfa /, ayrı bir boş rotayı beyan ve yapmak england ve england/london ama biçiminde yalnızca yolları istiyorsanız :country kısım isteğe bağlı olmayan: Bir olmasını istiyorsanız

routes: { 
    "" : "home", 
    ":country(/:city)": "index" 
} 
+0

Genius eşleşen düşünebiliriz! Çok teşekkür ederim. Sadece başlangıç ​​çizgisine ihtiyacım yoktu. – Richard

2

tek rota ve URL'lerin nasıl görünmesini istediğinizi değiştirme esnekliğine sahip olursunuz. Ayrıca

routes: { 
"(/country/:country)(/city/:city)": "index" 
} 

"" (Empty string) 
"country/england" 
"country/england/city/london" 
İlgili konular