在MVC中,'模型'只是数据的代码表示(例如,在ASP.NET MVC中,它是具有相应字段的类)。
然而在Knockout(使用MVVM)中,我看到带有字段的对象称为“ViewModel”。来自官方KO文件:
模型:应用程序的存储数据。此数据表示对象 和业务领域的操作(例如,可以的银行帐户) 执行汇款)并且独立于任何UI。使用KO时 你通常会对一些服务器端代码进行Ajax调用来读取和 写下这个存储的模型数据。
视图模型:数据和操作的纯代码表示 用户界面。例如,如果您正在实现列表编辑器,那么您的视图 model将是一个包含项列表和暴露方法的对象 添加和删除项目。
从示例中可以看出,ViewModel是包含字段的对象,包含数据,通常由Model在MVC中完成的操作:
var myViewModel = {
personName: ko.observable('Bob'),
personAge: ko.observable(123)
};
所以我在这里有点失落。什么'模型'和'ViewModel'在Knockout.js域中意味着什么?
答案 0 :(得分:2)
<强>模型强>
模型保存信息,但通常不处理行为
查看强>
View包含需要了解Model和ViewModel的数据绑定,事件和行为。虽然这些行为可以映射到属性,但View仍然负责处理ViewModel的事件
的视图模型强>
ViewModel位于我们的UI层后面。它公开View(从模型)所需的数据,并且可以被视为我们的视图用于数据和操作的源。
您可以在以下链接中找到更多信息
here
您还可以在stackoverflow question
答案 1 :(得分:0)
这是我的教授(也是JavaScript程序员)所讲的。
模型是一个对象,将数据作为其属性之一。
而ViewModel只是将数据和DOM(文档对象模型)分开的接口/层。
对于Model,每次调用文档对象模型时,数据都会尝试连接到用户界面。
ViewModel用于停止该做法。一旦模型中的数据完全准备就绪,就将其分配给viewModel中存在的数组。然后从视图模型中将其显示在用户界面中。
这只是编程的好方法。