1

我有一个表格create作为集合的模型。add这会向集合触发一个事件。我将它绑定到一个方法:

this.collection.bind('add', this.addOne, this)

火灾...

addOne: function(tenant) {
   var self = this
   var collection = this.collection

   var view = new TenantView({model: tenant,collection:collection});
   self.$el.append(view.render().el);
}

将其create同步到数据库,但新的附加视图仍然isNew是主干,因为它没有获取集合并获取新模型的 id。

我的问题是,如何在isNew不获取整个集合然后附加它的情况下从服务器(具有 id 而不是)获取同步模型?

4

1 回答 1

4

使用sync事件而不是add...

this.collection.bind('sync', this.addOne, this);

调用时立即add触发事件;但是一旦服务器响应了 create 方法就会被触发,因此它应该包含正确的模型 idcreatesync

您还可以等待服务器的响应,然后再将模型添加到集合中——使用wait: trueincreate的 options hash: 来做到这一点collection.create({ ... }, { wait: true })

一旦在服务器上成功创建模型,创建模型将立即触发集合上的“添加”事件以及“同步”事件。如果您想在将新模型添加到集合之前等待服务器,请传递 {wait: true}。

于 2012-11-28T07:18:28.460 回答