1. KnockOut框架简称KO,是微软将应用于WPF/Silverlight的MVVM模式在Web上的尝试,这是一个非常有用的JavaScript框架。
  2. KO的核心就是绑定,包括数据绑定和行为绑定;
  3. KO的数据绑定包括单向和双向绑定;
  4. KO的行为绑定,即是将某个函数注册到某个元素的某个事件上。

示例如下:

                              省:                                       市:                                       区:                                       街道:                                       地址:                                         function AddressModel() {
             var self = this;
             self.province = ko.observable("江苏省");
             self.city = ko.observable("苏州市");
             self.district = ko.observable("工业园区");
             self.street = ko.observable("星湖街328号");
             self.address = ko.observable();
 
             self.format = function () {
                 if (self.province() && self.city() && self.district() && self.street()) {
                     var address = self.province() + " "
                                 + self.city() + " "
                                 + self.district() + " "
                                 + self.street();
                     self.address(address);
                 }
                 else {
                     alert("请提供完整的地址信息");
                 }
             };
             self.format();
         }
         ko.applyBindings(new AddressModel());
       </html>
  • 如上面的代码片段所示,我们定义了一个名为 AddressModel的函数作为整个"地址编辑"页面的ViewModel , AddressModel 的五个数据成员 Cprovince 、 city 、 district 、 street 和address)表示地址的四个组成部分和格式化的地址,它们都是基于双向绑定的Observable类型成员,意味着用户的输入能够即时改变绑定的数 据源,而数据源的改变也能即时地反映在绑定的 HTML元素上。
  • Observable数据成员是一个通过调用 ko.observable方法创建的函数,方法调用指定的参数表示更新的数据。
  • AddressModel的另一个成员format是一个自定义的函数,该函数进行地址格式化并用格式化的地址更新address字段。由于address字段是一个Observable成员,一旦它的值发生改变,被绑定的HTML元素的值将会自动更新。
  • AddressModel 的六个字段分别绑定在六个HTML元素上,其中province、city、district和street宇段绑定到代表对应文本框的的Value属性 上(data-bind="value: {成员名称}" ),而address字段则绑定到用于显示格式化地址的<span>元素的Text属性上(data-bind="text:{成员名称}" ),用于格式化地址的 format 字段则与"确定"按钮的 click 事件进行绑定(data-bind="click: {成员名称}")。
  • 真正的绑定工作发生在 ko.applyBindings 方法被调用的时候。

KnockOut.js入门示例详解的更多相关文章

  1. ASP.NET Web API 入门示例详解

    REST服务已经成为最新的服务端开发趋势,ASP.NET Web API即为.NET平台的一种轻量级REST架构. ASP.NET Web API直接借鉴了ASP.NET MVC的设计,两者具有非常类 ...

  2. Knockout JS 入门示例

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...

  3. Spring Boot 2.x 快速入门(下)HelloWorld示例详解

    上篇 Spring Boot 2.x 快速入门(上)HelloWorld示例 进行了Sprint Boot的快速入门,以实际的示例代码来练手,总比光看书要强很多嘛,最好的就是边看.边写.边记.边展示. ...

  4. Js apply 方法 详解

    Js apply方法详解 我在一开始看到JavaScript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这 ...

  5. ES6,ES2105核心功能一览,js新特性详解

    ES6,ES2105核心功能一览,js新特性详解 过去几年 JavaScript 发生了很大的变化.ES6(ECMAScript 6.ES2105)是 JavaScript 语言的新标准,2015 年 ...

  6. es6入门4--promise详解

    可以说每个前端开发者都无法避免解决异步问题,尤其是当处理了某个异步调用A后,又要紧接着处理其它逻辑,而最直观的做法就是通过回调函数(当然事件派发也可以)处理,比如: 请求A(function (请求响 ...

  7. Js apply()使用详解

    Js apply方法详解 我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这 ...

  8. Js apply方法详解,及其apply()方法的妙用

    Js apply方法详解 我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这 ...

  9. Python爬虫之爬取淘女郎照片示例详解

    这篇文章主要介绍了Python爬虫之爬取淘女郎照片示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 本篇目标 抓取淘宝MM ...

随机推荐

  1. SQL中的charindex函数与reverse函数用法

       ----------------------首先介绍charindex函数-----------------------------                                ...

  2. RobotFrameWork http/https oauth接口测试 (二)

    在RobotFrameWork http/https oauth接口测试 (一)中,大致介绍了相关的概念,终于可以步入正题了~~~ 先介绍下项目背景: 公司的项目采用的授权模式是第三种resource ...

  3. python核心编程学习记录之模块

  4. 用andtoid studio获取天气数据并解析适配

    1.申请拿到数据 可以用“聚合数据” 2.在android studio中导入需要的jar包 复制—>app—>libs—>粘贴—>右击—>Add As Library… ...

  5. JS闭包导致循环给按钮添加事件时总是执行最后一个

    加入如下脚本代码: <script> var list_obj = document.getElementsByTagName('li'); for (var i = 0; i <= ...

  6. easyui datagrid tooltip

    $('#dg').datagrid('getPanel').find('.easyui-tooltip').each(function(){ var index = parseInt($(this). ...

  7. ubuntu下安装、启动和卸载SSH

    想往VMWare虚拟机上的Ubuntu里面拷贝代码,发现之前安装好的secureCRT链接不上.发现是ssh安装配置出了问题,于是就把openssh-server卸载后重装,发现又是与openssh- ...

  8. 大分享-hibernate,springmvc,easyui简要介绍

    近期公司一直在做项目,主要用到了springMVC,eseayui,hibernate几大框架.近一个月的时间,个人就目前自我知识给予分享. 很多公司使用mybatis产品,综合所述其最大优点是全SQ ...

  9. RecyleView 简析

    LayoutManager.Adapter是必须设置的(不设置将无法显示数据---不执行onCreateViewHolder()等方法) ItemDecoration\ItemAnimator是可选的 ...

  10. iOS开发 ReactiveCocoa入门教程 第一部分

    作为一个iOS开发者,你写的每一行代码几乎都是在响应某个事件,例如按钮的点击,收到网络消息,属性的变化(通过KVO)或者用户位置的变化(通过CoreLocation).但是这些事件都用不同的方式来处理 ...