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

| 我一直在与KnockoutJS玩,并且绝对喜欢它通过防止物体掉入裂缝而从各个角度简化了设计。我的问题是将数据保存回服务器的推荐“最佳实践”是什么?我的理解是,在连接的MVVM中,第一个\“ M \\”是数据层,因此ViewModel触发器中的依赖项跟踪和通知直接保存回数据层。在JavaScript应用中,我们已断开连接,并使用AJAX有选择地保存回服务器。 我当前正在使用的应用程序是MVC3,我绝对知道如何在控制器上编写一个“保存”操作,在页面上的某个地方放置一个“保存”按钮,然后将整个ViewModel发布到该保存操作,然后将其持久保存到数据库。但是,当您进行快速编辑然后再次保存时该怎么办?或者,如果保存按钮不适合设计流程怎么办?相反,您想在每次没有任何保存按钮的情况下对表单进行更改时将其发布到操作上吗?我反弹的想法是: 每次进行任何更改时都发布整个ViewModel,并让Action找出什么是新的而不是什么(这并不理想,特别是对于大型模型,如果没有其他原因,因为每次保存时传输的数据会不必要地大)。向ViewModel中的每个项目添加一个属性,以跟踪自上次保存以来它是否是新的和/或更改的。然后,将这些项目grep出来,然后仅将其发布到服务器(我尚未测试过,但是我认为可以使用_destroy属性完成此操作,这是针对Rails应用程序的目的)。可能的话,这样就可以最大程度地减少前两个选项的痛苦(无论如何,都应该这样做)。还有其他更好的方法吗? 我希望有一些我没有想到的好主意。能够以声明方式绑定所有内容并仍然有效保存将是很棒的。     
已邀请:
我唯一想到的就是订阅。当我第一次开始阅读您的文章时,我却在想带有w / grep的标志。 编辑:更好的是,ѭ0看起来很有希望。 这是一个有效的示例。 剩下要做的唯一事情就是检测\'retained \'值的更改。不过,您的情况很好。     
我刚从Mix11回来,在那里我参加了有关Knockout.js的会议。值得一提的是,观看Steve Sanderson编写完整的CRUD演示。     
您可能会签出Knockout的Mapping插件,它使您可以从JSON数组加载Knockout。如果不是太大,则可以将该数组保存到计时器上的服务器上(或更改后)。希望对您有所帮助,对不起,如果您已经知道这一点。 http://knockoutjs.com/documentation/plugins-mapping.html http://knockoutjs.com/documentation/json-data.html     

要回复问题请先登录注册