Knockout初体验--监控属性

  Knockout是一款很优秀的JavaScript库(简称KO),它可以帮助你仅使用一个清晰整洁的底层数据模型(data model)即可创建一个富文本且具有良好的显示和编辑功能的用户界面。任何时候你的局部UI内容需要自动更新(比如:依赖于用户行为的改变或者外部的数据源发生变化),KO都可以很简单的帮你实现,并且非常易于维护。

  Knockout有以下几个重要概念

声明式绑定(Declarative Bindings):使用简明易读的语法很容易地将模型(model)数据关联到DOM元素上。

UI界面自动刷新(Automatic UI Refresh):当您的模型状态(model state)改变时,您的UI界面将自动更新。

依赖跟踪(Dependency Tracking):为转变和联合数据,在你的模型数据之间隐式建立关系。

模板(Templating):为您的模型数据快速编写复杂的可嵌套的UI。

下载安装
  Knockout的核心类库是纯JavaScript代码实现的,不依赖任何其他类库,所以按照如下步骤即将KO添加到你的项目里:

  下载Knockout的最新版本,下载地址: http://knockoutjs.com/downloads/index.html。

  在你的HTML页面中通过< script >标签引用Knockout文件。

这里写代码
<script src="knockout-3.4.0.js">script>

<html>
<head>
<meta charset="UTF-8">
    <title>konckout学习系列title>
    <script src="lib/knockout-3.4.0.js">script>
head>
<body>
    输入值:<input type="text" id="txtValue" data-bind="value: personName" /><br/>
    响应文本:<span id="spnValue" data-bind="text: personName">span>
body>
html>

可以看到,我们几乎都没写什么,完成了自动的感应和数据的绑定。

  1.只定义了一个 myViewModel组件对象(包含一个myValue的属性)。

  2.通过data-bind=”value: myValue”将myValue属性绑到的value值。

  3.通过data-bind=”text: myValue”将属性值动态的反映到中。

  4.添加ko.applyBindings( )绑定。

  
  注意:KO的绑定都是通过data-bind属性进行绑定的。

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,只需要将下面的代码加到

你可能感兴趣的:(knockout)