Javascript 为什么Collection.fetch()不更新视图?
我有Rails TodoList应用程序的以下视图。没有javascript错误。我甚至可以通过.fetch()方法看到/todos的GET请求。问题是,没有对addOne函数的调用,因此没有视图更新Javascript 为什么Collection.fetch()不更新视图?,javascript,ruby-on-rails,backbone.js,Javascript,Ruby On Rails,Backbone.js,我有Rails TodoList应用程序的以下视图。没有javascript错误。我甚至可以通过.fetch()方法看到/todos的GET请求。问题是,没有对addOne函数的调用,因此没有视图更新 $(function(){ Todos = new TodoList.Collections.Todos; TodoList.Views.TodoView = Backbone.View.extend({ tagName: "li", events: {}, initial
$(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);
}
});
});
在初始化函数中。这会引发javascript错误,表示toJSON函数未定义。我认为您输入了一个错误,并编写了
刷新
,而不是重置
。事件是重置,因此您必须替换此行:
Todos.bind("refresh", this.addAll);
与:
我假定事件已重命名为
reset
。所以试试这个Todos.bind(“reset”,this.addAll)代码>不完全是打字错误,刷新
在主干网0.5.0中被重命名为重置
Todos.bind("refresh", this.addAll);
Todos.bind("reset", this.addAll);