Backbone:从集合视图中将模型添加到集合中?

the*_*n85 15 javascript backbone.js

我有一些代码,我希望NoteCollectionView向NoteCollection添加一个新的Note.这是由NoteCollectionView中的函数newNote触发的:

newNote: function(data) {
    var note = new Note(data);
    this.collection.add(note);
},
Run Code Online (Sandbox Code Playgroud)

我对骨干网还很新,我想确保与服务器同步.我担心的是:

1)只需将此注释添加到集合中,就会从服务器触发save(),并使用服务器提供的ID更新模型?要么,

2)如果服务器没有更新我的模型并给我一个实际的ID,我如何用note.save()保存模型并从服务器获取一个ID?

jac*_*ers 35

为解决您的第一个问题,不会,.add不会触发任何类型的服务器调用; 它只会将模型添加到集合中.

但是,您确实有几个选项.一种方法是创建新的笔记模型,将其保存到数据库,然后将其添加到集合中:

newNote: function(data) {
    var note = new Note(data);
    note.save();
    this.collection.add(note);
}
Run Code Online (Sandbox Code Playgroud)

第二种选择是简单地使用Backbone的collection.create方法.给它一个属性的哈希,它会

  1. 创建模型
  2. 将其保存到数据库中
  3. 将其添加到集合中

一举一动,如下:

newNote: function(data) {
    return this.collection.create(data);
}
Run Code Online (Sandbox Code Playgroud)

collection.create 还返回新创建的模型,由上面的return语句说明.