我有一个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。
我的问题是,我怎样才能从服务器中获取已同步的模型(具有id并且不是isNew
),而无需获取整个集合然后附加它?
答案 0 :(得分:4)
使用sync
事件代替add
...
this.collection.bind('sync', this.addOne, this);
调用add
时,create
事件会立即触发 ;但是sync
gets fired once the server has responded to the create method, so it should include the correct model id。
您还可以在将模型添加到集合之前等待服务器的响应 - 为此使用wait: true
的选项哈希中的create
:collection.create({ ... }, { wait: true })
。
创建模型将导致在集合上触发立即“添加”事件,以及在服务器上成功创建模型后的“同步”事件。如果您想在将新模型添加到集合之前等待服务器,请传递{wait:true}。