使用 Backbone 和 Stickit 使模型保持最新

Posted

技术标签:

【中文标题】使用 Backbone 和 Stickit 使模型保持最新【英文标题】:Keeping models up to date with Backbone and stickit 【发布时间】:2013-05-13 15:10:27 【问题描述】:

我正在使用主干 + Stickit 在我的视图和模型之间提供两种方式绑定,但遇到了一些问题。

如何使模型与服务器保持同步?

我已将我的集合设置为每 60 秒调用一次 fetch()。这会从服务器获取最新版本的模型并“智能地合并”它们。但是,我仍然看到本地更改被覆盖。如果我在文本框中输入了一些文本(使用 Stickit 正确绑定),来自服务器的更改会覆盖本地更改。

视图变化时如何更新服务器?

当属性改变时,Stickit 会在模型上发出一个 change 事件,但是当服务器上的属性发生变化时也会触发 change 事件。调用 model.save() 的最佳位置在哪里,以便仅在stickit 发出更改事件时调用它?

【问题讨论】:

用户如何使用您的应用程序?你想支持实时协同编辑吗?您能否支持资源锁定,以便一次只有一个用户可以更新资源?如果多个用户可以编辑一段内容,则 60 秒的更新延迟不是一个好主意。 我可以更频繁地更新,但这只会给服务器带来更多压力...... 你有没有解决这个问题? 【参考方案1】:
    您可以在每个模型上保存模型 change 事件(坏主意) 您可以尝试使用 silent 选项获取模型,然后在需要时触发某些属性的更改事件(更好的主意) 将updateView 设置为false http://nytimes.github.io/backbone.stickit/#bindings/updateview(好主意)

【讨论】:

以上是关于使用 Backbone 和 Stickit 使模型保持最新的主要内容,如果未能解决你的问题,请参考以下文章

我正在使用backbone.stickit 进行模型绑定。如何将预填充选择与模型绑定?

与 require.js 和 backbone.stickit 一起使用时出现奇怪的 Backbone.Validation 错误

在 Backbone Stickit 中结合使用 visible 和 onGet

Backbone.stickit 和 html-form:如何只保存(补丁)更改的属性?

选择中的 OptionGroup 与stickit 绑定

如何修复Backbone.stickit中的'this.stickit()不是函数'错误