我有Backbone App以下是代码:
这是Main.coffee:
require ["App/app","backbone"] ,(App,Backbone)->
app = new App()
Backbone.history.start()
这是app.coffee:
class AppRouter extends Backbone.Router
routes :
"" : 'Base'
"Browse/:id" : "Details"
initialize : ->
@render()
Browse : (id) ->
console.log "Hello"
stud = new Student({UserKey:id})
stud.fetch({
success :->
$('#content').html new View({model:stud}).el
})
null
这是我的View.coffee
define ['jquery'
,'underscore'
,'backbone'
,'text!/Templates/Student/View.htm'] , ($ , _ , Backbone , ViewTemplate) ->
class StdView extends Backbone.View
#_.templateSettings = { interpolate: /\{\{(.+?)\}\}/g };
#template : _.template(View)
initialize : (options) ->
@render()
render :->
console.log @model.toJSON()
#@setElement @template @model.toJSON()
@
这是我的视图模板(用于显示学生的详细信息)
<input type="text" name="firstname" value="{{FirstName}}" placeholder="First Name" />
<input type="text" name="lastname" value="{{LastName}}" placeholder="Last Name" />
这些项目将呈现为一个表格,其中包含我点击编辑按钮以获取详细信息的链接。这是ids得到渲染的模板部分。
<td>
<a class="btn btn-small btn-inverse" href="#browse/{{UserKey}}"><i class="icon-edit icon-white"></i></a>
</td>
现在我已经启动了Backbone.history.start()。但是如果我点击链接例如:/ browse / 1,它就不会进入它应该去的Browse方法。它没有发生。点击时在浏览器上呈现的链接就像这样
的http://本地主机:40921 /#浏览/ 5
所以哪里出错了????????
答案 0 :(得分:1)
路由区分大小写,您应该这样:
routes :
"" : 'Base'
"browse/:id" : "Details"
如果您希望#browse/5
做任何事情。或者保持现在的路线,并更改链接以使用#Browse/5
。
演示:http://jsfiddle.net/ambiguous/NLzyS/
如果您想要不区分大小写的路由,可以使用route
手动添加正则表达式路由:
initialize: ->
@route(/browse\/(\d+)/i, 'Details')