Knockout JS 中的模型

Posted

技术标签:

【中文标题】Knockout JS 中的模型【英文标题】:Model in Knockout JS 【发布时间】:2013-02-14 07:17:51 【问题描述】:

在 Knockout.js MVVM 框架中,Model 与 ViewModel 是分开的,还是没有单独的 Model,ViewModel 负责表示领域数据(Model)的工作?

【问题讨论】:

【参考方案1】:

KO 中的模型是 json 数据对象(就像 f0x 指出没有 JSON 对象这样的东西,但我想你明白了)这可以直接与敲除一起使用,将数据与 DOM 粘合在一起。但在大多数情况下,需要 ViewModel 来向模型添加额外的功能(与 GUI 更紧密耦合的功能,例如使用 observables 的双向绑定)。

【讨论】:

KO中的模型是javascript对象。没有像 json 对象这样的东西。根据定义,它是一个字符串。 我知道,但人们称它为现在的常用术语,我编辑了我的答案以澄清这一点【参考方案2】:

KO 为您提供 ViewModel 并由您决定使用什么作为模型。 KO 还能够在视图和视图模型之间创建双向绑定。 它没有做任何其他事情。

【讨论】:

我同意维托雷。需要明确的是,我认为 MVVM 通常会谈论与 ViewModel 分开的模型。从这个意义上说,Model 是“真正的模型”,仅表示数据和领域逻辑,而 ViewModel 将此模型适应于视图,添加诸如单击处理程序之类的命令和各种数据表示。然后,相同的模型可以在不同的 ViewModel 中以不同的方式呈现。但是:作为 MVVM 框架的 Knockout 仅显式支持 ViewModel(可能除了“ko.toJS()”)。

以上是关于Knockout JS 中的模型的主要内容,如果未能解决你的问题,请参考以下文章

knockout.js remove 不适用于主视图模型中的嵌套视图模型和视图模型

knockout.js中的队列计时器

操纵knockout.js中的表

Knockout.js - 封装视图模型并从外部隐藏它们

多视图模型破坏了 knockout.js

在 knockout.js 视图模型中使用 `var self = this` 有啥好处 [重复]