2

这里有一点coffeescript,但随时用javascript回答:

model = new MyModel content: content
model.save()
@collection.add model

在其他地方,视图正在侦听add集合上的事件……</p>

_addOne: (model, collection, options)=>
  view = new MyView model: model
  @subviews[model.id] = view

有时模型还没有完成与服务器的对话,所以它没有 anid并且这段代码没有做想要的事情。因此,我save使用 when.js 库将其包装在一个承诺中(when映射到When此处)

When model.save()
  .then =>
    @collection.add model

现在,世界上的一切都是笨拙的。我想知道的是,有没有办法then进入该_addOne方法,因为那是真正在等待的部分,集合本身并不介意添加一个半生不熟的模型。

如果有人可以向我展示或指出正确的方向,我将不胜感激。

4

1 回答 1

2

改用Collection#create

createcollection.create(属性,[选项])

方便在集合中创建模型的新实例。相当于实例化一个带有属性哈希的模型,将模型保存到服务器,创建成功后将模型添加到集合中。[...]{wait: true}如果您想在将新模型添加到集合之前等待服务器,请通过。

所以如果你这样做:

@collection.create(
  { content: content }
  { wait: true }
)

然后模型不会被添加到集合中,直到服务器响应并且模型将在id那时由服务器提供。

于 2013-11-05T18:18:02.347 回答