首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Backbone.sync澄清

Backbone.sync澄清
EN

Stack Overflow用户
提问于 2015-07-14 18:39:07
回答 1查看 92关注 0票数 1

在阅读了文档之后,这就是我对sync的理解。

我实例化了一些Backbone.Model并调用了Collection.create()create()最终调用sync()ModelPOST编辑到服务器。然后,在相反的方向上有一个sync,这样客户机上的Model就会被赋予一个id

此更新会触发componentDidUpdate()吗?

注意:componentDidUpdate是ReactJS的东西,所以如果这没有意义,那么问题就归结为“客户端模型是否被更新,视图是否被重新呈现?”

因为在我的componentDidUpdate()中,我调用save()来保持所有的最新信息,这随后对sync()进行了调用,然后发出PUT请求(因为Model已经有了id)。

我问这个问题,因为在我当前的应用程序中,创建一个TodoItem似乎会产生一个POST,然后是一个PUT,我觉得这是多余的。也许是因为一个不相关的原因。

实际上,当添加一个条目时,它会触发两个帖子,然后是两个but,但这是另一个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-15 16:03:55

当您第一次保存模型(没有id的模型)时,它将生成一个POST,然后它将生成PUT (update)。我认为您混淆了何时使用create/add/save

  • 在任何点使用save将当前客户端集合/模型状态保存到服务器
  • 使用add将模型添加到集合(单个模型、模型数组或包含属性的对象数组中,并让集合创建它们)
  • 使用create作为创建模型、将其添加到集合并将集合同步到服务器的简写。

我的猜测是,您在一个操作中调用createsave --您应该使用addsave,或者只使用create

视图不会自动为您更新,您需要侦听集合/模型上的更改或事件,并亲自更新视图--没有类似于componentDidUpdate的内容。例如:

代码语言:javascript
复制
initialize: function() {
    this.listenTo(this.collection, 'sync', this.onCollectionSync);
},

onCollectionSync: function() {
    this.render();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31414714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档