我试图了解KO中Model和ViewModel之间的区别。我理解概念上的差异,但对我而言,KO中的所有模型似乎都将成为或成为ViewModels的候选者。我会解释:
假设您有一排座位,所以在您的主要 ViewModel 中,您将初始化并将席位模型中的对象集合加载到可观察的数组中
现在你想根据座位的某个属性隐藏显示座位......这就是你的模型成为另一个视图模型的地方......
所以说在KO中我们拥有的是ViewModels吗?
答案 0 :(得分:15)
是。基本上,任何ko.observable
的东西都在创建一个ViewModel。您可以创建一个简单的javascript模型,只能表达JSON,并将其包装起来,但Knockout的MVVM模式中的“模型”通常只存在于服务器上。您从服务器获取模型数据,然后将模型数据发送回服务器(请记住,您不发送observables
,只发送他们的数据)
Knockout并不真正关心模型的来源,因为它的主要作用是处理声明性视图(HTML)和ViewModel(带有View-aware observables
)之间的数据绑定。 / p>
MVVM模式是由Knockout之外的技术完成的,因为它只是一个客户端框架。你可以说它只是模式的VVM部分,但这很令人困惑。