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

时间:2012-07-11 17:44:58

标签: javascript backbone.js

我有一些代码,我希望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?

1 个答案:

答案 0 :(得分:35)

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

但是,你有两个选择。一种方法是创建新的笔记模型,将其保存到数据库,然后将其添加到集合中:

newNote: function(data) {
    var note = new Note(data);
    note.save();
    this.collection.add(note);
}

第二种选择是简单地使用Backbone's collection.create method。给它一个属性的哈希值,它将

  1. 创建模型
  2. 将其保存到数据库
  3. 将其添加到集合
  4. 一下子就像这样:

    newNote: function(data) {
        return this.collection.create(data);
    }
    

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