레일즈 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 함수가 정의되지 않았다는 자바 스크립트 오류가 발생합니다.
내가 이벤트가 reset' '로 이름이 바뀌 었습니다 가정합니다. 그래서 이것을 시도해 보라.'Todos.bind ("reset", this.addAll);' – Deeptechtons
아 .. 내 하루를 구했다. 경례. –