概念:Knockoutjs是一个JavaScript实现的MVVM框架

核心功能:

1. Declarative bindings  声明式绑定

2. Observables and dependency tracking  监听值得改变和依赖跟踪

3. Templating  模板

使用步骤:

1.往项目中拖进

2.写一个ViewModel方法,在ViewModel方法里完成:

声明赋值 -》this.firstName = "Zixin" ; this.lastName = "Yin";

然后显示:<p data-bind="text: firstName"></p>

     <p data-bind="text: lastName"></p>

这样就可以完成显示了,把ViewModel方法中声明的值显示在<p>上

View就是<p>,Model就是this.firstName,this.lastName,必须要把View与Model关联起来才有效果,并且下面这行代码必须写到全部页面加载完成后调用

$(function () {
  ko.applyBindings(new ViewModel());
});

接下来就是监听值的改变:

this.firstName = ko.observable("Zixin");
this.lastName = ko.observable("Yin");

<input data-bind="value: firstName" />
<input data-bind="value: lastName" />

这样就完成输入框值的改变,<p>标签显示的值也跟着改变

如果关联了多个值,其中一个值的改变,这个总值也跟着改变,就要用到  ko.computed()

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

<p data-bind="text: fullName"></p>

如果点击某个按钮,引发其他值的改变就要用到  this.lastName(改变的值)

this.capitalizeLastName = function () {
  this.lastName(this.lastName().toUpperCase());
}

<button data-bind="click: capitalizeLastName">Caps</button>

以上就是绑定和监听的基本使用

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title><script src="Scripts/jquery-1.7.1.min.js"></script><script src="Scripts/knockout-3.4.2.js"></script><script type="text/javascript">function ViewModel() {this.firstName = "Zixin";this.lastName = "Yin";this.firstName = ko.observable("Zixin");this.lastName = ko.observable("Yin");this.fullName = ko.computed(function () {return this.lastName() + " " + this.firstName();}, this)this.capitalizeLastName = function () {this.lastName(this.lastName().toUpperCase());}}$(function () {ko.applyBindings(new ViewModel());});</script>
</head>
<body><div>       <p data-bind="text: firstName"></p><p data-bind="text: lastName"></p><input data-bind="value: firstName" /><input data-bind="value: lastName" /><p data-bind="text: fullName"></p><button data-bind="click: capitalizeLastName">Caps</button></div>
</body>
</html>

实现下面这种订单效果,随着数量的变化,总金额也跟着改变

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title><script src="Scripts/jquery-1.7.1.min.js"></script><script src="Scripts/knockout-3.4.2.js"></script><script type="text/javascript">//一定要页面加载完成调用Model$(function () {ko.applyBindings(new Order());});var products = [{ name: "Thinkpad X1", price: 9000 },
{ name: "Hp ProBook", price: 5555 },
{ name: "Mouse", price: 45 }];function Order() {var self = this;self.items = ko.observableArray([//This data should load from server new Item(products[0], 1),new Item(products[1], 2)]);self.price = ko.computed(function () {var p = 0;for (var i = 0; i < self.items().length; i++) {var item = self.items()[i];p += item.product.price * item.amount();}return p;}, self);}function Item(product, amount) {var self = this;this.product = product;this.amount = ko.observable(amount);this.subTotal = ko.computed(function () {return self.amount() * self.product.price;}, self);}</script>
</head>
<body><div><table><thead><tr><td>Name</td><td>Amount</td><td>Price</td></tr></thead><tbody data-bind="foreach:items"><tr><td data-bind="text: product.name"></td><td><select data-bind="options:[1,2,3,4,5,6],value: amount"></select></td><td data-bind="text: subTotal"></td></tr></tbody></table><h3>Order Price:<span data-bind="text: price"></span></h3></div>
</body>
</html>

  

 

转载于:https://www.cnblogs.com/BOSET/p/7083508.html

KnockOutJS(一)相关推荐

  1. [转]Knockoutjs快速入门

    本文转自:http://www.cnblogs.com/yinzixin/archive/2012/12/21/2827356.html Knockoutjs是一个JavaScript实现的MVVM框 ...

  2. MVVM架构~knockoutjs系列之从Knockout.Validation.js源码中学习它的用法

    说在前 有时,我们在使用一个插件时,在网上即找不到它的相关API,这时,我们会很抓狂的,与其抓狂,还不如踏下心来,分析一下它的源码,事实上,对于JS这种开发语言来说,它开发的插件的使用方法都在它的源码 ...

  3. MVVM架构~knockoutjs系列之验证成功提示显示

    对于knockout.validation来说,我们已经知道了如何去验证大部分表单元素,而有时,我们的需求希望在每个元素验证成功后,去显示正确的提示,这个我们很容易的使用self.元素.isValid ...

  4. MVVM架构~knockoutjs实现简单的购物车

    返回目录 概念相关 购物车相信大家都用过,很方便,可以将多个商品添加到购物车,并且可以修改购买商品的数据,当然为了用户体验好,在修改数据时,你的价格也会出现变化的,这使用JS可以实现,但我认为,代码量 ...

  5. knockoutjs ajax分页,KnockoutJS 3.X API 第四章之数据控制流foreach绑定

    foreach绑定 foreach绑定主要用于循环展示监控数组属性中的每一个元素,一般用于table标签中 假设你有一个监控属性数组,每当您添加,删除或重新排序数组项时,绑定将有效地更新UI的DOM- ...

  6. Magicodes.WeiChat——自定义knockoutjs template、component实现微信自定义菜单

    2019独角兽企业重金招聘Python工程师标准>>> 本人一向比较喜欢折腾,玩了这么久的knockoutjs,总觉得不够劲,于是又开始准备折腾自己了. 最近在完善Magicodes ...

  7. 重拾Javascript (四) KnockoutJs使用

    利用KnockoutJs来进行数据绑定及隔行不同样式或不同绑定数据操作 效果:[点击加载更多按钮 加载更多数据可从服务器来进行获取] 代码:[KO通过data-bind进行数据绑定 有TEXT,HTM ...

  8. java用mvvm,[Java教程]MVVM架构~使用boxy和knockoutjs实现编辑功能

    [Java教程]MVVM架构~使用boxy和knockoutjs实现编辑功能 0 2014-04-24 14:00:08 返回目录 这个功能我认为非常有用,尤其在后台管理系统中,它对用户来说,使用体验 ...

  9. KnockoutJS 3.X API 第一章 简介

    本文纯正翻译自官网API文档.其中包含一下个人理解. 官网API地址:http://knockoutjs.com/documentation/introduction.html 简介 Knockout ...

  10. Knockoutjs 实践入门 (2) 绑定事件

    Knockoutjs 绑定事件 Knockoutjs 不仅支持UI 元素的属性绑定到model的属性,还支持UI 元素的事件绑定model的事件. 需求: l  click me button 每单击 ...

最新文章

  1. 深入了解AI加速芯片的定制数据流架构与编译器 | 公开课
  2. python将scikit-learn自带数据集转换为pandas dataframe格式
  3. LeetCode-数组-删除有序数组重复元素
  4. Lowest Common Ancestor of a Binary Search Tree(树中两个结点的最低公共祖先)
  5. zabbix 安装时常见问题处理
  6. 本地的文件怎么放到虚拟桌面_搬新家桌面文件怎么收纳?5个便宜实用的收纳神器,你买过几个?...
  7. Java JSR303 valid
  8. c语言计算N升纯净水的分子数,C语言编程题
  9. nginx + tomcat 架构中,页面跳转,URL不变,网页内容变
  10. C语言计算机题库第91套,二级c语言上机题库 2013年9月全国计算机等级考试二级C语言上机题库100套.doc...
  11. 有三个桶,两个大的可装8斤的水,一个小的可装3斤的水,现在有16斤水装满了两大桶就是8斤的桶,小桶空着,如何把这16斤水分给4个人,每人4斤。没有其他任何工具,4人自备容器,分出去的水不可再要回来。
  12. java实现给图片添加水印
  13. Win10上装SAS
  14. 制作背景透明图标的小工具(附源代码)
  15. python数据分析电影论文_以腾讯5000部电影为例,告诉你Python数据分析该怎么做...
  16. echarts将x轴展示在图标上方
  17. 记一次面试准备(续上)
  18. 【商业信息】国家地区语言缩写码
  19. 每日算法(四十三)-java为了更改的规划城市,需要统计楼栋数目信息。
  20. 使用代理服务器导致电脑无法打开网页解决办法

热门文章

  1. 一套完整仿拉勾网HTML静态网页模板(含38个独立HTML)
  2. 中国科学院全国名词委组合数学和计算机科学研究开发中心 顾同新,有关组合数学家陆家羲的几点史实澄清.doc...
  3. 中标麒麟打包qt(Shell文本)
  4. java计算机毕业设计风情旅游网站源码+mysql数据库+系统+lw文档+部署
  5. 尼康单反AF自动对焦模式与AF区域模式详解
  6. UG(NX)二次开发 BlockUI 集列表使用方法
  7. HP计算机管理软件,HP Power Assistant
  8. JaxWsProxyFactoryBean调用WebService实例
  9. 智能汽车路径规划-曲线插值法、人工势场法
  10. js实现百度换肤功能