ajax - 在 MVVM/Knockoutjs Web App 中保存更改的最佳方法?

标签 ajax mvvm save knockout.js

我一直在玩 KnockoutJS 并且非常喜欢它通过防止东西掉入裂缝从各个角度简化设计的程度。我的问题是将数据保存回服务器的推荐“最佳实践”是什么?我的理解是,在连接的 MVVM 中,第一个“M”是数据层,因此 ViewModel 触发器中的依赖跟踪和通知直接保存回数据层。在 JavaScript 应用程序中,我们断开连接并使用 AJAX 有选择地保存回服务器。

我目前使用的应用程序是 MVC3,我绝对知道如何在我的 Controller 上编写“保存”操作,在页面上的某处放置“保存”按钮,将整个 ViewModel 发布到该保存操作,然后坚持到数据库。但是,当您进行快速编辑然后再次保存时呢?或者如果保存按钮不符合设计流程怎么办?相反,您希望每次对表单进行更改时都发布到操作,而根本没有保存按钮?我反弹的想法是:

  • 每次进行任何更改时都发布整个 ViewModel,并让 Action 弄清楚什么是新的,什么不是(不理想,特别是对于大型模型,如果没有别的,因为每次保存时传输的数据会不必要地大)。
  • 向 ViewModel 中的每个项目添加一个属性,以跟踪自上次保存以来它是否是新的和/或更改的。然后,grep 出这些项目并只将它们发布到服务器(我没有对此进行测试,但我认为这可以使用 _destroy 属性来完成,正如 Rails 应用程序所设计的那样)。
  • 尽可能多地分成更小的 ViewModel,这样前两个选项带来的痛苦就会最小化(无论如何都应该这样做)。
  • 还有其他更好的方法吗?

  • 我希望有一些我没有想到的好主意。能够以声明方式绑定(bind)所有内容并仍然有效地保存将是很棒的。

    最佳答案

    我刚从参加this session的Mix11回来关于 Knockout.js。观看 Steve Sanderson 制作完整的 CRUD 演示可能值得您花时间。

    关于ajax - 在 MVVM/Knockoutjs Web App 中保存更改的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5671034/

    相关文章:

    c# - 自动生成可编译的 C# - 实现 INotifyPropertyChanged 的​​包装类

    iphone - 核心数据关系即使设置也不保存

    flutter - 弹出框编辑后无法保存日期

    javascript - 如何在每个 ajax 请求上调用特定函数

    javascript - 如何在ajax html()中获取子数组

    c# - WPF图表控件更改**系列**图例中的标题

    java - For 循环检查文件是否存在以及是否不创建文件

    javascript - ajax注入(inject)的元素无法被选择

    jquery - 使用node的Ajax post到sql不断增加发送的数据

    windows-phone-7 - 如何: Data Persistence in Windows Phone