2012-06-21 4 views
0

레일즈 TodoList 앱에 대한 다음과 같은 뷰가 있습니다. 자바 스크립트 오류가 없습니다. .fetch() 메소드로/todos에 대한 GET 요청을 볼 수도 있습니다. 문제는 addOne 함수를 호출 할 필요가 없으므로 뷰 업데이트가 없다는 것입니다.Collection.fetch()가 뷰를 업데이트하지 않는 이유는 무엇입니까?

$(function(){ 
Todos = new TodoList.Collections.Todos; 
TodoList.Views.TodoView = Backbone.View.extend({ 
    tagName: "li", 
    events: {}, 
    initialize: function(){}, 
    template: _.template('<li> {{task }}</li>'), 
    render: function(){ 
     var todo = this.model.toJSON(); 
     //return this.template(todo); 
     return "blah"; 
    } 
}); 

TodoView = TodoList.Views.TodoView; 

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

    addOne: function(todo){ 
     var view = new TodoView({model: todo}); 
     this.$("#todo_list").append(view.render().el); 
     alert("here"); 
    }, 

    addAll: function(){ 
     Todos.each(this.addone); 
    }, 

    newAttributes: function(event){ 
     var new_todo_form = $(event.currentTarget).serializeObject(); 
     return { 
      dog: { 
       name: new_todo_form["todo[task]"], 
       age: new_todo_form["todo[done]"] 
      } 
     }; 
    }, 

    createTodo: function (e){ 
     e.preventDefault(); 
     var params = this.newAttributes(e); 
     Dogs.create(params); 
    } 
}); 
}); 

또한 I 수동 초기화 함수

this.addOne({task: "blah", done:"true"}); 

를 사용하여 전화하려고. toJSON 함수가 정의되지 않았다는 자바 스크립트 오류가 발생합니다.

+2

내가 이벤트가 reset' '로 이름이 바뀌 었습니다 가정합니다. 그래서 이것을 시도해 보라.'Todos.bind ("reset", this.addAll);' – Deeptechtons

+0

아 .. 내 하루를 구했다. 경례. –

답변

1

나는 당신이 오타를 만들고 reset 대신에 refresh을 썼다고 생각합니다. 이 행사는 reset, 그래서 당신은이 라인을 교체해야 :

Todos.bind("refresh", this.addAll); 

과 :

Todos.bind("reset", this.addAll); 
+0

정확하게 typo가 아니며, 'refresh'는 Backbone 0.5.0에서'reset'으로 이름이 변경되었습니다. http://backbonejs.org/#changelog – nikoshr

관련 문제