Backbone:如何在不获取整个集合的情况下更新isNew模型?

时间:2012-11-28 07:14:23

标签: javascript backbone.js

我有一个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),而无需获取整个集合然后附加它?

1 个答案:

答案 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的选项哈希中的createcollection.create({ ... }, { wait: true })

  

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