我打算用knockout.js和MVVM模式在客户端上的一个单页的应用程序。 所以模型,将的ViewModels在客户端进行定义。 我感到困惑,我们怎么也得在服务器端结构。
现在,将控制器只返回域模型本身? 都会从域模型到视图模型映射在客户端只发生?
在我的解决方案,还有就是域模型和视图模型之间的巨大差距。 所以会导致上述方法在大量的数据返回给客户端不必要的。 尽管这似乎有点小题大做,我想重复视图模型和InputViewModel定义(前者代表渲染的数据,后者表示数据发回到控制器动作)在服务器端,并且还具有一个映射层(基于automapper)到域模型映射在服务器端的ViewModels。 这是否有意义? 还是有更好的方法?
我建议你制定什么样的数据视图模型的实际需要,然后让控制器建立一个包含数据并将其发送给客户端的JSON格式的服务器端视图模型。
你是不是在向客户端发送不必要的数据(或后)这样,你仍然可以做很多服务器和淘汰赛视图模型上繁重的工作可以做他们的意思为:呈现数据使用由视图。
你在2点所述实际上是我用的最多的解决方案,它是有道理的对我说:我用Automapper在服务器端领域模型和的ViewModels(.NET对象)是查看具体的,并且只包含的数据之间进行映射查看需求。 控制器动作就是负责装载视图中第一次,将数据绑定观对视图模型,使页面,而无需进行Ajax调用快速初始化。 在查看自己创建的视图模型淘汰赛,化JSON给予任何初始值(如果需要)编码界视图模型(例如使用Asp.Net MVC我会做这样的事情
var boundedViewModel = @Html.Raw(Json.Encode(Model));
这正是我将如何解决这个问题。 如果这是一个直MVC应用程序,你仍然会创建的ViewModels。
有时,复杂的数据集,我可以看到一个用例使用类似击退,这需要Backbone.js的丰富的数据模型,并结合knockout.js它http://kmalakoff.github.com/knockback/