Knockout.js之初印象
时间:2019-12-16
本文章向大家介绍Knockout.js之初印象,主要包括Knockout.js之初印象使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近在学Knockout.js,想要把看到的东西用blog记录下来。
Knockout.js是一个MVVM的框架,突然想起之前有人问我哪些是MVVM框架?我回答了angular.js和bootstrap(糗),现在看了些博客,书,粗略的了解了MVVM是什么?
MVVM即Model,ViewModel,View
Model:数据模型
View:视图/UI
ViewModel:用于视图和模型的之间的数据传递。
我了解的MVVM是指大部分数据的处理用js完成,后台返回Model,通过ViewModel将数据绑定到UI。同时也可以在ViewModel中进行大部分的数据处理。有修改仅需修改ViewModel,非常方便。
Knockoutjs有监控,追踪的功能,即可以双向绑定数据。(之前的开发过程中有遇到页面没有刷新,也没有重新获取修改后数据导致后台拿到的还是修改之前的数据,这个bug找了蛮久,我觉得可以用knockoutjs双向绑定来解决)
双向绑定带来了一个好处,即不论是UI改变,还是后台传过来的Model有所变化,knockoutjs都能感知得到,这就是ko.observable(),ko.observabkeArray(),ko.computed()的功劳了。
下面看一段简单的程序:我要在页面上显示姓名,并且可以姓名可以随着我改变姓或者名而变化 <html> <head> <title>Kong's Website</title> <script src="~/Scripts/knockout-3.5.1.js"></script> <script src="~/Scripts/jquery-3.3.1.js"></script> </head> <body> <p>firstName:<input type="text" data-bind="value:firstName" /></p> <p>lastName:<input type="text" data-bind="value:lastName" /></p> <p>firstName:<strong data-bind="text:firstName"></strong></p> <p>lastName:<strong data-bind="text:lastName"></strong> </p> </body> </html> @section scripts{ <script> function viewModel() { var self = this; self.firstName = ko.observable("Cherry"); self.lastName = ko.observable("Li"); } var viewModel = new viewModel(); ko.applyBindings(viewModel); </script> }
我要显示全名 即 姓+名,只需要添加在lastName后面添加
<p>fullName:<strong data-bind="text:fullName"></strong></p>
在viewModel中添加
self.fullName = ko.computed(function () { return self.firstName() + " " + self.lastName(); });
比如我要在页面显示一个table
<html> <head> <title>Kong's Website</title> <script src="~/Scripts/knockout-3.5.1.js"></script> <script src="~/Scripts/jquery-3.3.1.js"></script> </head> <body> <table> <thead> <tr> <th>Name</th> <th>Age</th> </tr> </thead> <tbody data-bind="foreach:Person"> <tr> <td data-bind="text:name"></td> <td data-bind="text:type"></td> </tr> </tbody> </table> </body> </html> @section scripts{ <script> function viewModel() { var self = this; self.Person = ko.observableArray([ { name: "Bungle", type: "Bear" }, { name: "George", type: "Hippo" }, { name: "Zippy", type: "Unknown" } ]); } var viewModel = new viewModel(); ko.applyBindings(viewModel); </script> }
原文地址:https://www.cnblogs.com/xiaoxinstart/p/12051680.html
- Bash概论 - Linux系列教程补充篇
- 我母亲遭遇勒索软件CryptoWall的全过程
- Android浏览器跨域数据窃取和Intent Scheme攻击
- 关于React Native项目在android上UI性能调试实践
- 一文读懂如何用 Python 实现6种排序算法
- 三星KNOX远程静默安装漏洞深入分析报告
- 技术分享:MSSQL注入xp_cmdshell
- 通过5个简单序列预测实例学习LSTM递归神经网络
- Google发现Windows 8.1 0day漏洞并公布漏洞验证程序(PoC)
- 携程React Native实践
- 数据分析告诉你:Php最不安全,Nginx比Apache安全
- 用python抓取摩拜单车API数据并做可视化分析(源码)
- 用Pandas在Python中可视化机器学习数据
- Intent 属性详解(下)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- vue实现文字表情同时输入的方法
- 不同类型的ABAP内表读写性能比较
- JavaScript和ABAP的MD5计算源代码
- 读取SAP CRM One Order应用日志的优化方式
- 悟空活动中台 - 基于 WebP 的图片高性能加载方案
- DES ECB加解密的Java实现
- win10 uwp 不显示 SplashScreen 欢迎界面的方法
- WPF 在 XAML 写 C# 代码
- 解析 HashMap源码值概括
- 解析 HashMap 源码之基本操作
- Docker手册
- 小知识:TFA收集日志报错空间不足
- Java SPI 居然这么多知名框架在用
- Ceph 入门到实战之 RBD 块存储接口
- 聊聊 Python 面试最常被问到的几种设计模式(下)