knockoutjs 经验总结
|
knockout的模式
|
MVVM
|
|
四大重要概念
|
声明式绑定UI界面自动刷新依赖跟踪模版
|
|
一些特点
|
纯javascript类库
可添加到web程序最上部
简洁 才25kb
兼容任何主流浏览器
采用行为驱动开发
|
|
快捷键的设置方法
|
settings->keymap
|
|
jQuery 和 knockout的 长处
|
1. jQuery 擅长 元素操作 和 事件
2. knockout 擅长 数据模型与用户UI界面进行关联
|
|
data-bind
|
文本 text
按钮是否可点击 enable ; 但实际操作中发现得用这个 touch-events: none; pointer-events: none;
|
|
激活knockout
|
ko.applyBindings( viewModel , view ) ;这个view可以省略,
当你在一个页面中声明了多个View Model来绑定不同的界面区域时,这样限制是很有好处的
|
|
监控机制
|
var myViewModel = {
personName: ko.observable('Bob'),
personAge: ko.observable(123)
} ;
|
|
计算属性
|
fullName:ko.computed( function(){
return this.personName + " " + this.personLastName ) ,}
this ) ;
|
|
监控属性数组(observableArray)。
|
myObservableArray.sort( function(left, right) {
return left.lastName == right.lastName ? 0 : (left.lastName < right.lastName ? -1 : 1)
})
var myObservableArray = ko.observableArray();
2 myObservableArray.push('Some value');
有这些方法可用:pop unshift shift reverse splice remove removeAll
observableArray :跟踪的是数组中的对象,而不是对象的状况。即observableArray 仅跟踪它拥有的对象,并且在对象被添加或者删除的时辰,通知listeners 。要监控对象的属性变更,须要编写自力的代码
|
|
visible
|
<div data-bind="visible: shouldShowMessage">
<div data-bind="if: displayMessage">
|
|
text html 的绑定
|
html
|
|
其它属性绑定 用 attr
|
比如 <a data-bind="attr: { href: url, title: details }">
|
|
在没有绑定属性的情况下使用foreach
|
<!-- ko foreach: myItems --> <li>Item <span data-bind="text: $data"></span></li> <!-- /ko -->
|
|
with
|
要学会用 其实就是声明母对象
|
|
as
|
声明子对象的名字 举例:
<ul data-bind="foreach: { data: categories, as: 'category' }">
<li>
<ul data-bind="foreach: { data: items, as: 'item' }">
<li>
<span data-bind="text: category.name"></span>:
<span data-bind="text: item"></span>
</li>
</ul>
</li>
</ul>
|
|
class其实是分开控制的
|
<div class="tab-1 active" data-bind="click:navigateTo('bean'), css: {'active':$root.beanIsSelected"}></div>
|
|
如果渲染绑定view的子级要不要加$root
|
其实不用
|
|
如果在html里给绑定的方法加参数了,有一种写法默认会执行一次,有一种写法不会
|
click:navigateTo('star') 这种会默认执行一次
click: function() { navigateTo('star') } 这种不会默认就执行一次
|
|
判断class是否存在支持 !吗
|
不支持css: {'active': !beanIsSelected}" 前面的这种写法是无效的
要用这种写法:css: {'active': !beanIsSelected() }
|
|
如何绑定图片地址
|
<img data-bind="attr:{'src':oneitem.imgUrl}" />
|
|
动态绑定高度的方法
|
data-bind="style:{'height':$root.tabInnerHeight }"
tabInnerHeight: ko.computed( function(){
return (window.innerHeight * 0.6) + "px" ;}, this ),
|
|
绑定方法的写法:
|
navigateTo: this.navigateTo.bind( this ),
|
|
$root
|
基本上用不上 $root
|
|
event binding
|
<div data-bind="event: { mouseover: enableDetails, mouseout: disableDetails }">
|
|
其它绑定
|
form 的 submitinput 的 value
|
|
input 的 value 和 enable
|
<input type='text' data-bind="value: cellphoneNumber, enable: hasCellphone" />
|
|
hasfocus
|
<input data-bind="hasfocus: isSelected" />
|
|
checked
|
<p>Send me spam: <input type="checkbox" data-bind="checked: wantsSpam"/></p>
|
|
options
|
<p>Destination country: <select data-bind="options: availableCountries"></select></p>
|
|
selectedOptions
|
<select data-bind="options: availableCountries, selectedOptions: chosenCountries" size="5" multiple="true"></select>
|
|
上下文绑定
|
#parent $parents $root $data $index $parentContext $context $element
|
|
template绑定通过模板将数据render到页面
|
|
|
|
|
knockoutjs 经验总结的更多相关文章
- KnockoutJS 3.X API 第三章 计算监控属性(1) 使用计算监控属性
计算监控属性(Computed Observables) 如果你有一个监控属性firstName,和另一个lastName,你要显示的全名?可以使用计算监控属性来实现-它依赖于一个或多个其他监控属性, ...
- Knockoutjs官网翻译系列(一)
最近马上要开始一个新项目的研发,作为第一次mvvm应用的尝试,我决定使用knockoutjs框架.作为学习的开始就从官网的Document翻译开始吧,这样会增加印象并加入自己的思考,说是翻译也并不是纯 ...
- 一年开发ASP.NET MVC4项目经验总结
一年开发ASP.NET MVC4项目所用所学技术经验总结 阅读目录 文章背景 前端所用技术摘要 后端所用技术摘要 1. 文章背景 本人2014年从Java转行到C#从事BS项目的开发,刚开始接触的是A ...
- SignalR + KnockoutJS + ASP.NET MVC 实现井字游戏
SignalR + KnockoutJS + ASP.NET MVC 实现井字游戏 1.1.1 摘要 今天,我们将使用SignalR + KnockoutJS + ASP.NET MVC实现一个实 ...
- 移动硬盘不能识别的常见7种解决方案 ~ By 逆天经验
服务器汇总:http://www.cnblogs.com/dunitian/p/4822808.html#iis 服务器异常: http://www.cnblogs.com/dunitian/p/45 ...
- 【原创经验分享】WCF之消息队列
最近都在鼓捣这个WCF,因为看到说WCF比WebService功能要强大许多,另外也看了一些公司的招聘信息,貌似一些中.高级的程序员招聘,都有提及到WCF这一块,所以,自己也关心关心一下,虽然目前工作 ...
- iOS架构一个中型普通App的一些经验总结
这一版比较完善的的App终于提交审核了.有时间写写自己的一些经验的总结了.自己主导的从0到比较成型的app到目前来说也只有两个,但是其中的很多东西都是大同小异.基本上是想到了什么就写什么,感觉写的不到 ...
- 从史上八大MySQL事故中学到的经验
本文列举了史上八大MySQL宕机事件原因.影响以及人们从中学到的经验,文中用地震级数来类比宕机事件的严重性和后果,排在最严重层级前两位的是由于亚马逊AWS宕机故障(相当于地震十级和九级). 一.Per ...
- CentOS上 Mono 3.2.8运行ASP.NET MVC4经验
周一到周三,折腾了两天半的时间,经历几次周折,在小蝶惊鸿的鼎力帮助下,终于在Mono 3.2.8上运行成功MVC4.在此总结经验如下: 系统平台的版本: CentOS 6.5 Mono 3.2.8 J ...
随机推荐
- ffmpeg-01-Subtitle
1. ffmpeg简介 2. 摘录文档 2.1 过滤 Filtering 2.1.1 简单滤镜 2.1.2 复杂的滤镜 2.1.3 简单过滤与复杂过滤 2.2 Stream 流复制 2.3 对比图 3 ...
- SRS源码——Listener
1. 整理了一下Listener相关的UML类图:
- C++ list结构体变量排序
以下内容是自己整理的根据结构体里面的不同变量,对list排序的实例,若有问题可以留言.仅供参考. #include <iostream> #include <list> #in ...
- Centos7 nginx的负载均衡概念与配置
一.负载均衡概念 负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端多台 ECS 的流量分发控制服务.负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单 ...
- 哈希表,Java中的hashCode
哈希表: 将我们所需的键通过哈希函数转换索引,然后存储在一个数组中. 哈希表是时间和空间之间的平衡,体现空间换时间的算法思想(联想到预加载,缓存等,有时候多存储,预处理缓存一些东西,带来时间复杂度的改 ...
- 剑指offer 二叉树的后序遍历序列
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 思路:这题目有点特殊,主要在于序列为空的时候,不是 ...
- 图解jvm--(一)jvm内存结构
jvm内存结构 1.程序计数器 1.1 定义 Program Counter Register 程序计数器(寄存器) 作用,记住下一条jvm指令的执行地址 特点 是线程私有的 (唯一)不会存在内存溢出 ...
- 终于解决ERROR: PHP's 'ldap' extension is not installed/enabled. Please check your MR
我的系统是centos,php是yum的5.6.40,php-ldap也是yum的5.6.40,配置好ldap后,登录时提示ERROR: PHP's 'ldap' extension is not i ...
- 多元线性回归算法的python底层代码编写实现
1.对于多元线性回归算法,它对于数据集具有较好的可解释性,我们可以对比不过特征参数的输出系数的大小来判断它对数据的影响权重,进而对其中隐含的参数进行扩展和收集,提高整体训练数据的准确性. 2.多元回归 ...
- 如何看Analysis分析图
第一步,从分析Summary的事务执行情况入手. Summary主要是判定事务的响应时间与执行情况是否合理.如果发现问题,则需要作进一步分析.通常情况下,如果事务执行情况失败或者响应时间过长等,都需要 ...