我有一些代码,我希望NoteCollectionView在NoteCollection中添加一个新的Note。这是由NoteCollectionView中的函数newNote触发的:
newNote: function(data) {
var note = new Note(data);
this.collection.add(note);
},
我还是骨干新手,我想确保与服务器同步。我担心的是:
1)只需将此注释添加到集合中,就会从服务器触发save(),并使用服务器提供的ID更新模型?或者,
2)如果服务器没有更新我的模型并给我一个实际ID,如何使用note.save()保存模型并从服务器获取ID?
答案 0 :(得分:35)
要解决您的第一个问题,不,.add
不会触发任何类型的服务器调用;它只会将模型添加到集合中。
但是,你有两个选择。一种方法是创建新的笔记模型,将其保存到数据库,然后将其添加到集合中:
newNote: function(data) {
var note = new Note(data);
note.save();
this.collection.add(note);
}
第二种选择是简单地使用Backbone's collection.create method。给它一个属性的哈希值,它将
一下子就像这样:
newNote: function(data) {
return this.collection.create(data);
}
collection.create
也会返回新创建的模型,由上面的return语句说明。