2012-04-15 110 views
1

我必须失去它。我设置了最简单的Backbone应用程序,但似乎无法获得路线回复。这里是我的路由器(在CoffeeScript中):骨干对路线没有反应

class BackboneSupport.Routers.TicketsRouter extends Backbone.Router 
    initialize: -> 
    @tickets = new BackboneSupport.Collections.TicketsCollection() 

    routes: 
    "/new"  : "newTicket" 
    ".*"  : "index" 

    newTicket: -> 
    alert 'hi, from the new ticket route' 

    index: -> 
    // just to prove a point 
    $('#tickets').html('tickets go here') 
    @navigate('/new') 

我也得到了整个列车移动:

<div id="tickets"></div> 

<script type="text/javascript"> 
    $(function() { 
    window.router = new BackboneSupport.Routers.TicketsRouter(); 
    Backbone.history.start(); 
    }); 
</script> 

正如你所期望的根路径(指数)填充#tickets与占位符文本,并成功地导航到/新路线(通过地址栏确认),但它不会提示任何事情,这意味着newTicket方法未被触发。

我在这里错过了什么?

UPDATE:

每低于rjz,我更新了导航方法:

@navigate('/new', {trigger: true}) 

但奇怪的是,仍然没有警觉:/

+0

是。您需要将触发器选项设置为true,以导航调用'newTicket'。有关详细信息,请参阅http://documentcloud.github.com/backbone/#Router-navigate :-) – rjz 2012-04-15 17:06:15

+0

哈!谢谢。看到我的更新,因为它仍然不启动新的路线。 – imderek 2012-04-15 17:11:28

回答

5

你不应该有前导斜杠在你的路线中,你需要这个:

class BackboneSupport.Routers.TicketsRouter extends Backbone.Router 
    routes: 
    "new": "newTicket" 
    ".*" : "index" 
    #... 

演示:http://jsfiddle.net/ambiguous/veSDF/1/

fine manual

延长Backbone.Router.extend(properties, [classProperties])

[...]请注意,你要避免你的路由定义使用斜线:

+0

宾果!谢谢你,先生。 – imderek 2012-04-15 17:21:29