0

我有 Backbone 应用程序这里是代码:

这是 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

这是我的观点。咖啡

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" />

这些项目被呈现到一个带有链接的表格中,我从该链接单击编辑按钮以获取详细信息。这是渲染 id 的模板部分。

 <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://localhost:40921/#browse/5

那么到底哪里出错了??????

4

1 回答 1

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/

于 2012-09-09T06:04:30.663 回答