使用 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