在学习ko之前先来介绍下MVVM模式:model:程序中存储的数据,通常说是向服务器调用 Ajax 读写这个存储的模型数据。 view model: 在 UI 上,纯 code 描述的数据以及操作。view: 一个可见的,交互式的,表示 view model 状态的 UI。
我们首先来创建个viewmodel模型 当然如果你要是想运行一下的程序的话应引入ko和jquery的js文件:
view层:
先建立个个id为bindId的div块 在其中放入内容为The name is 和span标签在span标签中添加绑定data-bind="text:personName"
vm层:
var viewmodel={
personName:ko.observable('tom'),
personAge:ko.observable(12)
};
ko.applyBindings(viewmodel,$("#bindId")[0]);
第一个参数你想用于声明式绑定 。
第二个参数(可选),可以声明成使用 data-bind 的 HTML 元素或者容器。
observables的读和写
读取监控属性(observable)的值,只需要直接调用监控属性(observable)(不需 要参数),例如 ViewModel.personName() 将返回''tom'', ViewModel.personAge() 将返回 12。 写一个新值到监控属性(observable)上,调用这个 observable 属性并当新值作为参 数。例如:调用 ViewModel.personName('Mary') 将更新 name 值为'Mary'。 给一个 model 对象的多个属性写入新值,你可以使用链式语法。例如: ViewModel.personName('Mary').personAge(50) 将会将 name 更新为 'Mary' 并且 将 age 更新为 50.
监控属性(observables)的特征就是监控(observed),例如其它代码可以说 我需要得到对象变化的通知,所以 KO 内部有很多内置的绑定语法。所以如果你 的代码写成 data-bind="text: personName", text 绑定注册到自身,一旦 personName 的值改变,它就能得到通知。
当然调用 myViewModel.personName('Mary')改变 name 的值,text 绑定将自动更 新这个新值到相应的 DOM 元素上。这就是如何将 view model 的改变传播到 view 。