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方法.给它一个属性的哈希,它会
一举一动,如下:
newNote: function(data) {
return this.collection.create(data);
}
Run Code Online (Sandbox Code Playgroud)
collection.create 还返回新创建的模型,由上面的return语句说明.