2012-06-21 96 views
1

我有我的模型和意見Backbone.js在單獨的文件。該模型和集合是這樣的爲什麼.fetch()未定義爲Collections?

$(function(){ 

    TodoList.Models.Todo = Backbone.Model.extend({ 
     url: function(){ 
       return this.id? '/todos/' + this.id : '/todos/' ; 
       }, 
     initialize: function() { 
       } 
    }); 

    TodoList.Collections.Todos = Backbone.Collection.extend({ 
     model: TodoList.Models.Todo, 
     url: "/todos" 
}); 

}); 

視圖代碼是:

$(function(){ 
    Todos = TodoList.Collections.Todos; 
    TodoList.Views.AppView = Backbone.View.extend({ 
    el: $("#todo_app"), 
    events: { 
     "submit form#new_todo": "createTodo" 
    }, 
    initialize: function(){ 
     _.bindAll(this, 'addOne', 'addAll'); 
     Todos.bind("add", this.addOne); 
     Todos.bind("refresh", this.addAll); 
     Todos.bind("all", this.render); 
     Todos.fetch(); 
    }, 
     . 
     . 
     . 
}); 

的JavaScript現在不會運行。它說fetch()函數是未定義的。有任何想法嗎?

回答

3

您應該創建託多斯收集的新實例:

Todos = new TodoList.Collections.Todos(); 
+0

在本教程中, https://github.com/AndrewGertig/backbone-demo/blob/master/public/javascripts/dogs。 js 在AppView代碼塊中,沒有爲Dog集合創建新對象並使用提取。 –

+0

我的不好。現在明白了。萬分感謝。 –

+0

是的,你有'window.Dogs = new DogCollection;'在線28 – 2012-06-21 10:49:48