2012-04-27 11 views
11

Router w Backbone.js jest odpowiedzialny za routing stron po stronie klienta i łączenie ich z działaniami i zdarzeniami opartymi na adresach URL. Ale jak wywołać zmianę adresu URL? Mam na myśli to, że jedynym sposobem na to jest zamknięcie elementu związanego z routingiem strony w tagu <a>.Jak wyzwalać zdarzenia Backbone.Router w Backbone.js?

bo mam związane z mousedown i mouseup zdarzenia z elementu używanego do trasowania, jeśli mogę umieścić go w <a> znacznika na mousedown i mouseup wydarzenia z pewnością staną się nieważne jak będzie miał konflikt z zdarzenie click <a> tagu. Czy istnieją inne sposoby na rutowanie?

Odpowiedz

31

Można użyć Router#navigate:

nawigacjarouter.navigate(fragment, [options])

Gdy dochodzą do punktu, w aplikacji, którą chcesz zapisać jako adres URL, zadzwoń nawigacja w celu aktualizacji adres URL. Jeśli chcesz również wywołać funkcję trasy, ustaw opcję trigger na true.

Tak więc, jeśli router jest r i chcesz aktywować trasę na #/some_route, a następnie można:

r.navigate('some_route', { trigger: true }); 

Demo (otwórz konsolę proszę): http://jsfiddle.net/ambiguous/xkZtB/

+0

dziękuję za Twoja pomoc! – chaonextdoor

+0

Jeszcze jedno pytanie, ponieważ muszę uzyskać dostęp do danych w modelu, aby podać identyfikator dla mojego adresu URL, na przykład "category /: id". Jak mam to zrobić? – chaonextdoor

+0

@chaonextdoor: Powinieneś być w stanie zbudować odpowiednią trasę jako ciąg znaków i przekazać go do 'navigate':' r.navigate ('category /' + m.get ('id'), {trigger: true}) ' –