骨干与coffeescript路由器id无法正常工作

时间:2012-09-09 05:12:10

标签: backbone.js coffeescript

我有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

所以哪里出错了????????

1 个答案:

答案 0 :(得分:1)

路由区分大小写,您应该这样:

routes :
    "" : 'Base'
    "browse/:id" : "Details"

如果您希望#browse/5做任何事情。或者保持现在的路线,并更改链接以使用#Browse/5

演示:http://jsfiddle.net/ambiguous/NLzyS/

如果您想要不区分大小写的路由,可以使用route手动添加正则表达式路由:

initialize: ->
    @route(/browse\/(\d+)/i, 'Details')

演示:http://jsfiddle.net/ambiguous/2S6wr/