在阅读了文档之后,这就是我对sync的理解。
我实例化了一些Backbone.Model并调用了Collection.create()。create()最终调用sync(),Model被POST编辑到服务器。然后,在相反的方向上有一个sync,这样客户机上的Model就会被赋予一个id。
此更新会触发componentDidUpdate()吗?
注意:componentDidUpdate是ReactJS的东西,所以如果这没有意义,那么问题就归结为“客户端模型是否被更新,视图是否被重新呈现?”
因为在我的componentDidUpdate()中,我调用save()来保持所有的最新信息,这随后对sync()进行了调用,然后发出PUT请求(因为Model已经有了id)。
我问这个问题,因为在我当前的应用程序中,创建一个TodoItem似乎会产生一个POST,然后是一个PUT,我觉得这是多余的。也许是因为一个不相关的原因。
实际上,当添加一个条目时,它会触发两个帖子,然后是两个but,但这是另一个问题。
发布于 2015-07-15 16:03:55
当您第一次保存模型(没有id的模型)时,它将生成一个POST,然后它将生成PUT (update)。我认为您混淆了何时使用create/add/save
save将当前客户端集合/模型状态保存到服务器add将模型添加到集合(单个模型、模型数组或包含属性的对象数组中,并让集合创建它们)create作为创建模型、将其添加到集合并将集合同步到服务器的简写。我的猜测是,您在一个操作中调用create和save --您应该使用add和save,或者只使用create。
视图不会自动为您更新,您需要侦听集合/模型上的更改或事件,并亲自更新视图--没有类似于componentDidUpdate的内容。例如:
initialize: function() {
this.listenTo(this.collection, 'sync', this.onCollectionSync);
},
onCollectionSync: function() {
this.render();
}https://stackoverflow.com/questions/31414714
复制相似问题