2011-09-22 8 views
30

Mój "widok" jest skonfigurowany jak poniżej. prosty.Backbone.js - nawigacja do trasy po zdarzeniu "kliknięcia" w widoku

var ItemView = Backbone.View.extend({ 
    tagName : "li", 

    events : { 
    "click" : "display" 
    }, 

    display : function() { 
    //app.navigate('item'); // take me to my route! 
    } 
}); 

I mam mój ruter

var App = Backbone.Router.extend({ 

    routes: { 
    "" : "index", 
    "item" : "view_item" 
    }, 

    index: function() { 
    alert('hi!'); 
    }, 

    view_item: function() { 
    alert('bye!'); 
    } 
}); 

app = new App(); 
Backbone.history.start(); 

Teraz, gdy klikam na ItemView, należy uruchomić „display” metodę i chcę metoda wyświetlacza, aby zabrać mnie na trasie I określonym w trasach "pozycja".

Czy to możliwe? Myślałem, że funkcja "nawiguj" będzie działać, ale nie działa. Jak mogę to osiągnąć?

Odpowiedz

49
display : function() { 
    app.navigate('item', true); 
    } 

Potrzebujesz drugiego zestawu parametrów do wartości true.

Z dokumentacji Backbone:

navigaterouter.navigate (fragment [triggerRoute]) Gdy dochodzą do punktu, w aplikacji, którą chcesz zapisać jako adres URL, zadzwoń nawigować w celu zaktualizuj adres URL. Jeśli chcesz również wywołać funkcję trasy, przeprowadź triggerRoute.

+7

Alternatywny sposób na to samo i odpowiadający dokumentom kręgosłupa: 'app.navigate ('item', {trigger: true});' – Daan

+3

Jeśli nie masz routera 'app' w zakresie, może używać 'Backbone.history.navigate (url, options)' – LeeGee

0

Możesz też zrobić to bezpośrednio z html, jeśli używasz znacznika "< a>".

przykład:

<a href="#item">Show Itens</a> 

Działa również, wolę ten sposób, gdy jest oczywiście możliwe.

Powiązane problemy