2011-09-22 52 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> 

它也可以,我更喜欢这种方式的时候当然是可能的。