Javascript 主干:将模型移动到另一个集合
这是我第一次使用主干网,所以我对一切都很困惑。我想列一张待办事项清单。单击todo上的“完成”后,我希望它附加到“完成”列表中 我一直在学习本教程,我尝试复制代码(我尝试创建一个新的completedTodo视图和类似的东西),我尝试在单击“finished”时删除$el,然后添加到completedTodos。我认为这里的问题是,即使它被添加,它也没有做任何事情Javascript 主干:将模型移动到另一个集合,javascript,backbone.js,Javascript,Backbone.js,这是我第一次使用主干网,所以我对一切都很困惑。我想列一张待办事项清单。单击todo上的“完成”后,我希望它附加到“完成”列表中 我一直在学习本教程,我尝试复制代码(我尝试创建一个新的completedTodo视图和类似的东西),我尝试在单击“finished”时删除$el,然后添加到completedTodos。我认为这里的问题是,即使它被添加,它也没有做任何事情 done: function() { var completed = new CompletedTodo({ complet
done: function() {
var completed = new CompletedTodo({
completedTask: this.$('.task').html(),
completedPriority: this.$('.priority').html()
});
completedTodos.add(completed);
this.model.destroy();
},
我在那里放了一个调试器,看看它是否真的添加到了集合中,以及何时完成了todos.toJSON();,它确实还给了我刚才添加的新内容
但是,它不会附加到我的收藏列表中
这是我的整个脚本文件,以防我命名错误
var Todo = Backbone.Model.extend({
defaults: {
task: '',
priority: ''
}
});
var CompletedTodo = Backbone.Model.extend({
defaults: {
completedTask: '',
completedPriority: ''
}
});
var Todos = Backbone.Collection.extend({});
var todos = new Todos();
var CompletedTodos = Backbone.Collection.extend({});
var completedTodos = new CompletedTodos();
//Backbone view for one todo
var TodoView = Backbone.View.extend({
model: new Todo(),
tagName: 'tr',
initialize: function() {
this.template = _.template($('.todos-list-template').html());
},
events: {
'click .finished-todo': 'done',
'click .delete-todo' : 'delete'
},
done: function() {
var completed = new CompletedTodo({
completedTask: this.$('.task').html(),
completedPriority: this.$('.priority').html()
});
completedTodos.add(completed);
this.model.destroy();
},
delete: function() {
this.model.destroy();
},
render: function() {
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
//Backbone view for all todos
var TodosView = Backbone.View.extend({
model: todos,
el: $('.todos-list'),
initialize: function() {
this.model.on('add', this.render, this);
this.model.on('remove', this.render, this);
},
render: function() {
var self = this;
this.$el.html('');
_.each(this.model.toArray(), function(todo) {
self.$el.append((new TodoView({model: todo})).render().$el);
});
return this;
}
});
//View for one Completed Todo
var CompletedTodoView = Backbone.View.extend({
model: new CompletedTodo(),
tagName: 'tr',
initialize: function() {
this.template = _.template($('.completed-todos-template').html());
},
render: function() {
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
//View for all Completed Todos
var CompletedTodosView = Backbone.View.extend({
model: completedTodos,
el: $('.completed-todos-list'),
initialize: function() {
this.model.on('add', this.render, this);
},
render: function() {
var self = this;
this.$el.html('');
_.each(this.model.toArray(), function(completedTodo) {
self.$el.append((new CompletedTodoView({model: completedTodo})).render().$el);
});
return this;
}
});
var todosView = new TodosView();
$(document).ready(function() {
$('.add-todo').on('click', function() {
var todo = new Todo({
task: $('.task-input').val(),
priority: $('.priority-input').val()
});
$('.task-input').val('');
$('.priority-input').val('');
todos.add(todo);
});
});
在此之后,我还必须弄清楚如何使用Parse将其持久化到数据库中。我想我应该先让所有东西都在主干网中工作,然后试着把它们放到数据库中。我还假设使用node/express,那会有帮助吗?我基本上是一个RubyonRails类型的人,所以我真的不知道这些javascript框架类型的东西
谢谢你的帮助 好吧
只是因为我没有初始化视图
var completedTodosView = new CompletedTodosView();
这把它修好了。好的
只是因为我没有初始化视图
var completedTodosView = new CompletedTodosView();
这把它修好了