为什么即使定义了Backbone,Backbone.Controller也未定义?

时间:2012-06-23 15:22:38

标签: ruby-on-rails backbone.js

我正在尝试将控制器添加到我的Todo列表应用程序中。这是代码。

$(function(){
alert(Backbone); // => [object]
alert(Backbone.Controller); // => undefined
TodoList.Controllers.Todos = Backbone.Controller.extend({
routes: {
    "documents/:id": "edit",
    "": "index",
    "new": "newDoc"
},

edit: function(id){
    var todo = new Todo({id:id});   
    todo.fetch({
        success:function(model,resp){
            new App.Views.Edit({model:todo});
        },
        error: function(){
            new Error({message: "Couldn't find the todo item."});
            window.location.hash = '#';
        }
    });
},

index: function(){
    window.App = new TodoList.Views.AppView
}

});
});

正如评论中提到的,当我发出警报(Backbone)时,返回[object],而Backbone.Controller返回undefined,我无法弄清楚原因。这会阻止整个应用程序运行。

2 个答案:

答案 0 :(得分:5)

它已被Backbone路由器取代:http://backbonetutorials.com/what-is-a-router/

答案 1 :(得分:2)

你有哪个主干版本?
请尝试Backbone.Router而不是Backbone.Controller 引自http://backbonejs.org:自v5.0起

  

为清晰起见,Controller已重命名为Router

如果是这种情况,您可以制作Router的参考副本,以免改变现有代码:

if(Backbone.Router)
    Backbone.controller = Backbone.Router;