Backbone没有响应路由

时间:2012-04-15 17:03:42

标签: backbone.js coffeescript

我一定是要失去它。我已经设置了最简单的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并成功导航到/新路由(通过地址栏确认),但是,它不会提醒任何内容,这意味着{ {1}}方法未被触发。

我在这里缺少什么?

更新

下面的每个rjz,我将导航方法更新为:

newTicket

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

1 个答案:

答案 0 :(得分: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])

     

[...]请注意,您要避免在路径定义中使用前导斜杠: