2011-09-22 53 views
30

我的「視圖」設置如下。簡單。Backbone.js - 導航到視圖上的「點擊」事件後的路線

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

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

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

我有我的路由器

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(); 

現在,當我點擊ItemView控件,它應該運行「顯示」的方法,我想顯示方法帶我去我的路由指定的路線「項目」。

這可能嗎?我認爲「導航」功能將起作用,但事實並非如此。我怎麼能做到這一點?

回答

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

您需要將第二個參數設置爲true。

從骨幹文檔:

navigaterouter.navigate(片段[triggerRoute]) 每當你達到你的應用程序的一個點,你想保存爲一個URL,調用以導航到更新網址。如果你還想調用路由功能,傳遞triggerRoute。

+7

另一種方法可以做到這一點,並與骨幹文檔相對應:'app.navigate('item',{trigger:true});' – Daan

+3

如果您沒有範圍內的'app'路由器,可以使用'Backbone.history.navigate(url,options)' – LeeGee

0

或者您可以直接從html中執行操作,如果您使用的是「< a>」標記。

例如:

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

它也可以,我更喜歡這種方式的時候當然是可能的。