1

我一定会失去它。我已经设置了最简单的 Backbone 应用程序,但似乎无法获得响应的路线。这是我的路由器(在咖啡脚本中):

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占位符文本并成功导航到 /new 路由(通过地址栏确认),但是,它不会发出任何警报,这意味着该newTicket方法没有被触发。

我在这里想念什么?

更新:

根据下面的 rjz,我将导航方法更新为:

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

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

4

1 回答 1

5

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

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

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

来自精美手册

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

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

于 2012-04-15T17:15:59.783 回答