上个月做项目需要用到easyui和Knockout.js ,所以简单的整理了下,以便学习

Knockout.js 是一个JavaScript库,它可以让HTML控件很容易与数据进行绑定。使用的是“模型-视图-视图-模型(MVVM)”模式。对于分离前台的业务逻辑和视图简化数据绑定过程有很好的作用。

重要概念
1、声明式绑定:将模型数据关联到dom元素上
2、Ui界面自动刷新:模型改变,ui自动刷新
3、依赖跟踪:为转变和联合数据,在模型数据之间隐式建立关系
4、模板:为模型数据快速编写可嵌套的ui

正确的引用顺序:

<script type='text/javascript' src='jquery-1.4.2.min.js'></script>
<script type='text/javascript' src='jquery-tmpl.js'></script>
<script type='text/javascript' src='knockout-1.2.1.js'></script>

一、创建一个view model,只需要声明任意的JavaScript object。例如:

var myViewModel = {personName: ko.observable('Bob'),personAge: ko.observable(123)
};

可以为view model创建一个声明式绑定的简单view。下面的代码显示personName 值:

The name is <span data-bind="text: personName"></span>

data-bind属性不是HTML的原生属性需要激活Knockout 来让他起作用。
ko.applyBindings(myViewModel);这个代码块放在HTML底部,或者放在jQuery的$函数或者ready 函数里

一、监控属性(observable)
1 、读取监控属性(observable)的值,只需要直接调用监控属性(observable)(不需要参数),例如myViewModel.personName() 将返回’Bob’, myViewModel.personAge() 将返回 123。
2、写一个新值到监控属性(observable)上,调用这个observable属性并当新值作为参数。例如:调用 myViewModel.personName(‘Mary’) 将更新name值为’Mary’。
3、给一个model对象的多个属性写入新值,你可以使用链式语法。例如: myViewModel.personName(‘Mary’).personAge(50) 将会将name更新为 ‘Mary’ 并且 将age更新为 50.

二、依赖监控属性(Dependent Observables)
例如,下面的view model,

var viewModel = {firstName: ko.observable('Bob'),lastName: ko.observable('Smith')
};

可以添加一个依赖监控属性来返回姓名全称:

viewModel.fullName = ko.dependentObservable(function () {return this.firstName() + " " + this.lastName();
}, viewModel);

并且绑定到UI的元素上,例如:

The name is <span data-bind="text: fullName"></span>

不管firstName还是lastName改变,全称fullName都会自动更新

例:过滤并验证用户输入

  • read — 必选,一个用来执行取得依赖监控属性当前值的函数。

    • write — 可选,如果声明将使你的依赖监控属性可写,别的代码如果这个可写功能写入新值,通过自定义逻辑将值再写入各个基础的监控属性上。
    • owner — 可选,如果声明,它就是KO调用read或write的callback时用到的this。查看“管理this”获取更新信息。

3、监控数组(observableArray)
监控数组跟踪的是数组里的对象,而不是这些对象自身的状态。

操作observableArray:
anotherObservableArray.push(‘Some new value’) 在数组末尾添加一个新项
anotherObservableArray.pop() 删除数组最后一个项并返回该项
anotherObservableArray.unshift(‘Some new value’) 在数组头部添加一个项
anotherObservableArray.shift() 删除数组头部第一项并返回该项
anotherObservableArray.reverse() 翻转整个数组的顺序
anotherObservableArray.sort() 给数组排序(默认按照字符排序或者数字排序)。
anotherObservableArray..remove(someItem) 删除所有等于someItem的元素并将被删除元素作为一个数组返回
anotherObservableArray.remove(function(item) { return item.age < 18 }) 删除所有age属性小于18的元素并将被删除元素作为一个数组返回
anotherObservableArray..removeAll([‘Chad’, 132, undefined]) 删除所有等于’Chad’, 123, or undefined的元素并将被删除元素作为一个数组返回

Knockout绑定语法:
1、visible 绑定 ——-使得该元素的hidden和visible状态取决于绑定的值
2、Text 绑定 ———使得该元素显示的文本值为绑定的参数(多用于显示上)
3、Html 绑定 ———-使得该元素现实的html值为绑定的参数
4、Css 绑定 ———-添加或删除一个或多个CSS 样式 至DOM元素上
5、Style 绑定 ———-添加或删除一个或多个style样式 至DOM元素上
6、attr 绑定 ———提供了一种方式可以设置DOM元素的任何属性(例如src、herf)
7、Click 绑定 ———–在DOM元素上添加事件以便元素被点击的时候执行定义的JavaScript 函数(多用于button、input、a)
8、Event 绑定 ———-在DOM元素上添加指定的事件以便元素被触发的时候执行定义的JavaScript 函数(多用于keypress,mouseover和mouseout上)
9、Submit 绑定 ———-在from表单上添加指定的事件以便提交时执行javaScript函数(只能用于from元素)
10、Enable 绑定 ———–使DOM元素只有在参数值为true时才enable(激活) (多用于input、select、textarea)
11、Disable 绑定 ———–使DOM元素只有在参数值为true时才disable (禁用)(与上条用途一致)
12、value 绑定 ———–关联DOM元素的值到view mode的属性上(与上条用途一致)
13、Checked 绑定 ————关联到checkable的form表单控件到view model上
14、Options 绑定 ———–控制什么样的options在下拉列表或者多选列表里,此绑定不能用于select之外的元素,关联的数据应为数组,select会遍历显示数组的所有的项
15、SelectedOptions 绑定 ———用于控制多选列表已经被选择的元素,用在使用options绑定的select元素上
16、UniqueName 绑定——–确保所有绑定的元素都有一个非空的name属性,如果该元素没有name属性,就给他设置一盒unique的字符串作为name属性

模板绑定 template绑定通过模板将数据render到页面

Mapping插件


Knockout.js 整理相关推荐

  1. MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录...

    注:文章内容都是摘录性文字,自己阅读的一些笔记,方便日后查看. MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是 ...

  2. JQuery Ajax 与 Knockout.js的结合

    项目中遇到太多JQuery Ajax 与 Knockout.js的结合来处理数据的情况,今天将这部分内容梳理一下.一来弄清楚二者结合处理数据的流程,二来是感觉二者结合在一起用的时候有点将二者搞混了,弄 ...

  3. 【ASP.NET Web API教程】2.3.5 用Knockout.js创建动态UI

    [ASP.NET Web API教程]2.3.5 用Knockout.js创建动态UI 原文:[ASP.NET Web API教程]2.3.5 用Knockout.js创建动态UI 注:本文是[ASP ...

  4. Knockout.Js案例一Introduction

    在这第一个教程中,您将体验的一些基本知识构建的web UI Model-View-ViewModel使用knockout.js(MVVM)模式. 案例1:添加:data-bind <p>F ...

  5. MVVM(Knockout.js)的新尝试:多个Page,一个ViewModel

    对于面向数据的Web应用来说,MVVM模式是一项不错的选择,它借助JS框架提供的"绑定"机制是我们无需过多关注UI(HTML)的细节,只需要操作绑定的数据源.MVVM最早被微软应用 ...

  6. Knockout.js 初探

    Knockout.js是什么? Knockout是一款很优秀的JavaScript库,它可以帮助你仅使用一个清晰整洁的底层数据模型(data model)即可创建一个富文本且具有良好的显示和编辑功能的 ...

  7. knockout.js的简介和简单使用

    1.knockout简介 knockout是一个轻量级的UI类库,通过MVVM模式使JavaScript前端UI简单化 knockout有四大重要概念: 1)声明式绑定:使用简明移读的语法很容易地将模 ...

  8. Knockout JS 示例

    五个小例子,来自Knockout JS官方网站. //tutorial 1 //following codes uses to demonstrate observable values and ta ...

  9. Knockout.js的简单使用

    1.Knockout是 MVVM 框架 2.使用Knockout.js给view赋值 var viewmodel = { name: ko.observable('name'), nametow: k ...

最新文章

  1. 安卓打开rpm文件_微信文件如何分享到QQ?教你一招,不管什么手机都能行
  2. vconsole插件_移动端调试面板插件vconsole
  3. 计算机机房建设标准.doc,计算机机房建设标准(部分2)
  4. 2.3.1 进程的同步与互斥
  5. python删除word表格中的某一行_python docx删除word段落
  6. 基于python tkinter的课堂点名小程序
  7. 凯撒密码加密算法 (8 分)
  8. Linux下文件内容查阅命令
  9. 学习pytorch: 数据加载和处理
  10. Splay模板 1.0
  11. 移动脱机 Outlook 数据文件 (.ost)
  12. 字符数组中查找字符串或字符数组
  13. 用栈实现中缀表达式求值
  14. AES 主动转向 紧急转向 避障系统 转向避障 五次多项式 PID控制 纯跟踪控制 MPC控制 模型预测
  15. Modis-ET-NPP-GPP
  16. 2010年下半年11月份系统架构设计师上午试题以及参考答案之六
  17. 【入门2】分支结构 P1422 小玉家的电费
  18. qlv转php,如何将qlv文件转换成mp,qlv文件怎么免费转换为mp4格式
  19. 【十四】【vlc-android】aout音频输出模块源码实现分析【Part 2】
  20. 【26天高效学习Java编程】Day22:Java中的属性集-缓冲流-转换流-序列化流详解

热门文章

  1. python无法启动0xc0000022_无法正常启动0xc0000022?0xc0000022一键修复教程
  2. .jar是什么文件?(转载)
  3. 2019天猫双十一活动--自动逛店领猫币
  4. Linux服务器使用Less查看日志文件
  5. 前端程序员和后端程序员有什么不同?我来告诉你薪资待遇差多少
  6. 深圳免费旅游景点大全|深圳旅游攻略(上)
  7. 互联网公司招聘--去哪儿--产品运营--2014年笔试题
  8. workflow开发注意事项
  9. 如何将背景图改为透明(透明就是我们看到的方格图)
  10. sql语句 四表联查