2013-03-25 15 views
6

Sorgu parametrelerine sahip bir yol var. Görünümü etkinleştirirken, sorgu parametreleri toplanır ve bir sunucu tarafı isteğine iletilir. Parametrelerin ne olduğunu bilmiyorum. Bunları işlemek için sunucuya aktarıyorum.Durandal yönlendiricide sorgu parametreleri

Benim viewmodel etkinleştirme yöntemimde, context parametresi, sorgu parametrelerini ve ayrıca iki ek öğeyi içeren bir nesnedir: routeInfo ve yönlendirici. Durandal bunları sorgu parametrelerine ekler. İlk önce, sunucu tarafına geçmesini istemiyorum. İkincisi, sorgu parametrelerim de bu iki ismi içeriyorsa, üzerine yazılır.

Yöneltici kodunu inceledim ve paramlarıma nerede eklendiklerini buldum (dequeueRoute öğesinde), ancak eklemeyi engellemenin bir yolunu bulmayı ve sorgu parametrelerini onlar olmadan almanın bir yolunu buldum.

Rotainfo ve yönlendirici olmadan sorgu parametrelerini nasıl alabileceğimi bilen var mı? Ve meraktan dolayı, neden ayrı bir argüman yerine ilk sırada yer aldılar?

cevap

8

Sağınız. Devam ettim ve söylediklerinizi test ettim ve tüm querystring parametrelerinin bağlam parametresine yazıldığını görüyorum.

yüzden böyle bir yol varsa: En etkinleştirme yöntemi içinde

http://www.somesite.com/#/services/?routeInfo=value1&router=value2&param1=value3

:

{ 
    routeInfo: {...}, // info object of moduleId and such 
    router: {...}, // reference to the router.js pluggin 
    param1: 'value3', 
    splat: ['?routeInfo=value1&router=value2&param1=value3'] 
} 
:

define(function() { 
    return { 
    activate: function(context) { 
     console.log(context); 
    } 
    }; 
}); 

Sonra context bir json nesnesi olacak

Yani, querystring parametreleri t'ye yazılıyor. o context nesnesi ama eğer querystring parametreniz routeInfo, router veya splat ise kötü şeyler olacaktır. Özellikle de splat! Eğer sorgu dizesi parametreleri uyarısı nesnesine geçirilen gördüğünüz gibi

Yani, sadece, aynı zamanda .. bu parametreleri kullanmak

yok sanırım. Querystring'i kolayca şu şekilde yapabilirsiniz:

Böyle bir şey. Bu konuda geliştirmek isteyebilirsiniz .. Sadece şanti.

Ayrıca, sorgu dizesi paramlarınızı window.location nesnesinden de alabilirsiniz. window.location.search nesnesinden, ? sınırlayıcısından sonra her şeyi içerecektir.

Bu sorularınızı cevaplıyor mu?

+0

Başka bir şey yapılamıyorsam, mapAuto'yu da kullanmam durumunda, yalnızca splat özelliğini alıyorum. Sanırım kullanabilirdim, ama benim yönlendirme için başka ne yapacaklarından emin değilim. Her halükarda, benim oyunumdan daha da ötede, benim için en iyi şey sadece window.location.search kullanmaktır. Gerçekten dizgeyi kendim ayrıştırmak zorunda kalmadan bunu yapmanın bir yolu olsaydı. –

+0

durandal erken aşamalarında ve yönlendirici modül bir pluggin. Biraz zaman ver .. Bahse girerim önümüzdeki aylarda daha iyi olur. Kütüphane halen aktif olarak çalışıyor. Şimdi kullanmakta fayda var çünkü büyüdükçe o kadar bilgili olacaksınız. –

İlgili konular