Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干:将模型移动到另一个集合_Javascript_Backbone.js - Fatal编程技术网

Javascript 主干:将模型移动到另一个集合

Javascript 主干:将模型移动到另一个集合,javascript,backbone.js,Javascript,Backbone.js,这是我第一次使用主干网,所以我对一切都很困惑。我想列一张待办事项清单。单击todo上的“完成”后,我希望它附加到“完成”列表中 我一直在学习本教程,我尝试复制代码(我尝试创建一个新的completedTodo视图和类似的东西),我尝试在单击“finished”时删除$el,然后添加到completedTodos。我认为这里的问题是,即使它被添加,它也没有做任何事情 done: function() { var completed = new CompletedTodo({ complet

这是我第一次使用主干网,所以我对一切都很困惑。我想列一张待办事项清单。单击todo上的“完成”后,我希望它附加到“完成”列表中

我一直在学习本教程,我尝试复制代码(我尝试创建一个新的completedTodo视图和类似的东西),我尝试在单击“finished”时删除$el,然后添加到completedTodos。我认为这里的问题是,即使它被添加,它也没有做任何事情

  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();
这把它修好了