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

sil*_*ter 2 coffeescript backbone.js

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

    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()
Run Code Online (Sandbox Code Playgroud)

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

我看到了这一点:启动backbone.js历史记录时不能调用undefined的'start'.

但它没有帮助=(...

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

asa*_*yer 6

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

@app.myRouter = new MyRouter()
Run Code Online (Sandbox Code Playgroud)

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

TypeError:无法调用未定义**的方法'start'

嗯,由于某种原因Backbone.history是未定义的,所以没有启动方法.事实证明,一旦创建了一个至少有一个路由指定的控制器,Backbone.js就会创建一个名为Backbone.history(小写'h')的Backbone.History(大写'H')实例.这是有道理的,因为历史管理只有在有路由响应时才需要.