Knockout.js中的“模型”和“ViewModel”

时间:2013-12-16 10:14:07

标签: javascript model-view-controller mvvm knockout.js architectural-patterns

在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域中意味着什么?

2 个答案:

答案 0 :(得分:2)

<强>模型
模型保存信息,但通常不处理行为

查看
View包含需要了解Model和ViewModel的数据绑定,事件和行为。虽然这些行为可以映射到属性,但View仍然负责处理ViewModel的事件 的视图模型
ViewModel位于我们的UI层后面。它公开View(从模型)所需的数据,并且可以被视为我们的视图用于数据和操作的源。

您可以在以下链接中找到更多信息 here
您还可以在stackoverflow question

中找到有关mvc和mvvm的更多信息

答案 1 :(得分:0)

这是我的教授(也是JavaScript程序员)所讲的。

模型是一个对象,将数据作为其属性之一。

而ViewModel只是将数据和DOM(文档对象模型)分开的接口/层。

对于Model,每次调用文档对象模型时,数据都会尝试连接到用户界面。

ViewModel用于停止该做法。一旦模型中的数据完全准备就绪,就将其分配给viewModel中存在的数组。然后从视图模型中将其显示在用户界面中。

这只是编程的好方法。