2012-04-15 92 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