麻烦让Backbone.Router与coffeescript一起工作

时间:2012-04-10 19:19:01

标签: backbone.js coffeescript

这让我疯狂了。我无法让一个简单的路由器工作......

    jQuery ->
        class MyRouter extends Backbone.Router
            routes:
              ""            :"index"
              "/list"       :"showList"
              "/item/:id"   :"showItem"
            index: =>
              alert "index"
            showList: =>
              alert "get the lists"
            showItem: (id)=>
              alert "the item #{id}"

         @app = window ? {}
         @app = window.app ? {}
         @app.myRouter = MyRouter
         Backbone.history.start()

我总是收到此错误:  index.js:50Uncaught TypeError: Cannot call method 'start' of undefined

我看到了这个:Cannot call 'start' of undefined when starting backbone.js history.

但它没有帮助=(...

我确信这是一个简单的,但我有点卡在这里...... 请帮忙......

1 个答案:

答案 0 :(得分:6)

您没有创建Backbone.Router的实例,因此Backbone.history.start()将失败。

@app.myRouter = new MyRouter()

您发布的链接可以准确地告诉您问题所在:

  

TypeError:无法调用undefined **

的方法'start'      

嗯,由于某些原因,Backbone.history未定义,因此没有启动方法。事实证明,Backbone.js创建了一个   Backbone.History(大写'H')的一个实例,叫做Backbone.history   (小写'h') 一旦创建了控制器   至少指定一条路线。这是有道理的,作为历史   只有在有回应的路线时才需要管理。