Czy w trasie Backbone.js można ustawić parametry opcjonalne?Opcjonalny parametr trasy Backbone.js
np to:
routes:
"search/[:query]": "searchIndex"
zamiast:
routes:
"search/": "searchIndex"
"search/:query": "searchIndex"
Czy w trasie Backbone.js można ustawić parametry opcjonalne?Opcjonalny parametr trasy Backbone.js
np to:
routes:
"search/[:query]": "searchIndex"
zamiast:
routes:
"search/": "searchIndex"
"search/:query": "searchIndex"
Od kręgosłupa 0.9.9 można dodawać opcjonalne parametry z nawiasami.
Na przykład w swoich tras obiektów można zdefiniować opcjonalną część trasy tak:
routes: {
"organize(/:action)": "displayOrganize"
}
Teraz ścieżka url dopasuje /#organize
i tras jak /#organize/create
.
Pamiętaj, że jeśli potrzebujesz trasy jak /#organize/
(z tylnym ukośnikiem), aby uznać, można zrobić:
routes: {
"organize(/)(:action)": "displayOrganize"
}
Jak radzisz sobie z działaniem w ramach displayOrganize? np. czy można zrobić "displayOrganize: function (action) {if (action) {// do stuff ...}}"? – 1nfiniti
To powinna być zaakceptowana odpowiedź. –
Co na temat korzystania z *splat
:
trasy
router.routes
Trasa mapuje adresy URL z parametrami funkcji routera, podobnie jak hash zdarzeń widoku. Trasy mogą zawierać części parametrów,
:param
, które pasują do pojedynczego komponentu URL między ukośnikami; i splat części*splat
, które mogą pasować do dowolnej liczby składników URL.Na przykład trasa o numerze
"search/:query/p:page"
zostanie dopasowana do fragmentu#search/obama/p2
, przekazując do akcji"obama"
i"2"
. Trasa o numerze"file/*path"
zostanie dopasowana do#file/nested/folder/file.txt
, przekazując"nested/folder/file.txt"
do działania.
Możesz dodać regex tras opartych ręcznie za pomocą the route
method:
trasa
router.route(route, name, [callback])
ręcznie utworzyć trasę dla routera The
route
argumentem może być ciągiem routingu lub wyrażenie regularne. Każde pasujące przechwycenie z trasy lub wyrażenie regularne zostanie przekazane jako argument do wywołania zwrotnego.
Więc coś jak to powinno działać:
this.route(/^search\/(.*)?/, 'searchIndex');
Następnie searchIndex
byłoby uzyskać nazywane z niczego lub Twój :query
jako jej argument.
Wadą jest to, że nie można wstawiać tras regex do obiektu routes
. Możesz dodać wszystkie trasy z route
do swojej metody routera initialize
, jeśli chcesz zachować je wszystkie razem.
Prawdopodobnie najbardziej Najprostszym sposobem jest po prostu zadeklarować więcej niż jedna droga, jedna z dodatkową Arg, jeden bez:
routes:{
"authProxy/:hash": "authProxy",
"authProxy/:hash/:url": "authProxy"
}
potem po prostu sprawdzić na nich w sposób:
authProxy: function(hash, url){
if (url){
// Hash and URL.
}else{
// Just hash.
}
}
Note podoba mi się to znacznie lepiej niż dwie pozostałe odpowiedzi, ponieważ innym programistom bardzo łatwo jest zrozumieć, co się dzieje.
odpowiedź Gabe H powinny być zaakceptowane odpowiedź, zamiast @mu jest zbyt krótki . –
Tak! Zaawansowana technika! – TTT
Trasy takie jak "szukaj /: zapytanie" nie działają dla mnie. Jednak "wyszukiwanie" działa dobrze. Dowolny pomysł? –