我一定是要失去它。我已经设置了最简单的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
但奇怪的是,仍然没有警报:/
答案 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])
[...]请注意,您要避免在路径定义中使用前导斜杠: