View Models
Knockout是在下面三个核心功能是建立起来的:
监控属性(Observables)和依赖跟踪(Dependency tracking)、声明式绑定(Declarative bindings)、模板(Templating)。
在这一章中我们先介绍3个功能中的第一个。 在这之前, 我们来解释一下MVVM模式和view model的概念。
Model-View-View Model (MVVM) 是一种创建用户界面的设计模式。 描述的是如何将复杂的UI用户界面分成3个部分:
model: 你程序里存储的数据。这个数据包括对象和业务操作(例如:银子账户可以完成转账功能), 并且独立于任何UI。使用KO的时候,通常说是向服务器调用Ajax读写这个存储的模型数据。
view model: 在UI上,纯code描述的数据以及操作。例如,如果你实现列表编辑,你的view model应该是一个包含列表项items的对象和暴露的add/remove列表项(item)的操作方法。
view: 一个可见的,交互式的,表示view model状态的UI。 从view model显示数据,发送命令到view model(例如:当用户click按钮的时候) ,任何view model状态改变的时候更新。
使用KO时,你的View层主要就是简单的将HTML文档声明式的绑定到View Model,将它们关联起来。使用KO创建一个View Model,仅仅只需要声明一个JavaScript对象,例如:
var myViewModel = {personName: 'Bob',personAge: 123};
然后就可以为view model创建一个声明式绑定的简单view。例如:下面的代码显示personName 值:
The name is <span data-bind="text: personName"></span>
最后激活Knockout,只需要将下面的代码加到标签中就可以了:
ko.applyBindings(myViewModel);