2

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

    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

我看到了这个:启动backbone.js历史时无法调用未定义的'start'。

但这并没有帮助=(...

我相信这很容易,但我有点卡在这里......请帮助......

4

1 回答 1

6

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

@app.myRouter = new MyRouter()

您发布的链接确切地告诉您问题所在:

TypeError:无法调用未定义的方法“开始”**

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

于 2012-04-10T19:20:17.653 回答