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 经验总结的更多相关文章

  1. KnockoutJS 3.X API 第三章 计算监控属性(1) 使用计算监控属性

    计算监控属性(Computed Observables) 如果你有一个监控属性firstName,和另一个lastName,你要显示的全名?可以使用计算监控属性来实现-它依赖于一个或多个其他监控属性, ...

  2. Knockoutjs官网翻译系列(一)

    最近马上要开始一个新项目的研发,作为第一次mvvm应用的尝试,我决定使用knockoutjs框架.作为学习的开始就从官网的Document翻译开始吧,这样会增加印象并加入自己的思考,说是翻译也并不是纯 ...

  3. 一年开发ASP.NET MVC4项目经验总结

    一年开发ASP.NET MVC4项目所用所学技术经验总结 阅读目录 文章背景 前端所用技术摘要 后端所用技术摘要 1. 文章背景 本人2014年从Java转行到C#从事BS项目的开发,刚开始接触的是A ...

  4. SignalR + KnockoutJS + ASP.NET MVC 实现井字游戏

    SignalR + KnockoutJS + ASP.NET MVC 实现井字游戏   1.1.1 摘要 今天,我们将使用SignalR + KnockoutJS + ASP.NET MVC实现一个实 ...

  5. 移动硬盘不能识别的常见7种解决方案 ~ By 逆天经验

    服务器汇总:http://www.cnblogs.com/dunitian/p/4822808.html#iis 服务器异常: http://www.cnblogs.com/dunitian/p/45 ...

  6. 【原创经验分享】WCF之消息队列

    最近都在鼓捣这个WCF,因为看到说WCF比WebService功能要强大许多,另外也看了一些公司的招聘信息,貌似一些中.高级的程序员招聘,都有提及到WCF这一块,所以,自己也关心关心一下,虽然目前工作 ...

  7. iOS架构一个中型普通App的一些经验总结

    这一版比较完善的的App终于提交审核了.有时间写写自己的一些经验的总结了.自己主导的从0到比较成型的app到目前来说也只有两个,但是其中的很多东西都是大同小异.基本上是想到了什么就写什么,感觉写的不到 ...

  8. 从史上八大MySQL事故中学到的经验

    本文列举了史上八大MySQL宕机事件原因.影响以及人们从中学到的经验,文中用地震级数来类比宕机事件的严重性和后果,排在最严重层级前两位的是由于亚马逊AWS宕机故障(相当于地震十级和九级). 一.Per ...

  9. CentOS上 Mono 3.2.8运行ASP.NET MVC4经验

    周一到周三,折腾了两天半的时间,经历几次周折,在小蝶惊鸿的鼎力帮助下,终于在Mono 3.2.8上运行成功MVC4.在此总结经验如下: 系统平台的版本: CentOS 6.5 Mono 3.2.8 J ...

随机推荐

  1. 电脑中安装了两个版本的jdk,后装的会把第一个覆盖掉

    电脑中之前装过一个1.8的jdk,后来工作需要又装了个1.7的,但是1.7的没有在系统环境变量中进行配置,而是通过setclasspath文件设置的,但是后来我发现,虽然没有改变系统环境变量中的JAV ...

  2. LauUI 的学习

    LayUI学习笔记 layer laydate layui 学习新技术方法:学习一个新技术,要去把它的文档通读一遍,不管你能不能读明白,就算你不明白也大概能知道它是怎么回事了,一回生二回熟,多读几遍, ...

  3. 设计模式课程 设计模式精讲 16-4 代理模式Coding-动态代理

    1 代码演练 1.1 动态代理 2 疑难解答 2.1 动态代理invoke怎么执行的? 2.2 感觉这块理解的不是很好,下边有时间再看看 1 代码演练 1.1 动态代理 重点: 重点关注动态代理类 测 ...

  4. Eclipse配置maven和新建maven工程

    1 安装配置Maven 1.1 下载Maven 从Apache网站 http://maven.apache.org/ 下载并且解压缩安装Apache Maven.  Maven下载地址: http:/ ...

  5. iOS收起键盘

    在UIViewController中收起键盘,有四种代码方式: 1.让相应的控件放弃第一响应者 /** 放弃第一响应者 */ [self.nameTextField resignFirstRespon ...

  6. mockjs,json-server一起搭建前端通用的数据模拟框架教程

    无论是在工作,还是在业余时间做前端开发的时候,难免出现后端团队还没完成接口的开发,而前端团队却需要实现对应的功能,不要问为什么,这是肯定存在的.本篇文章就是基于此原因而产出的.希望对有这方面的需求的同 ...

  7. 关于length、length()、size()

    length:属性,数组的属性. length(): String的方法,方法体里面是  return value.length; size():集合如list.set.map的方法,返回元素个数.

  8. mybatis注解基础使用

      一.创建Maven项目 代码:pom.xml <?xml version="1.0" encoding="UTF-8"?> <projec ...

  9. Victor and String[Bestcoder #52 1004](回文树)

    题目描述 Victor喜欢玩字符串.他认为一个字符串是迷人的,当且仅当字符串是回文的.Victor想玩n次.每次他都会做以下四种操作中的一种.操作1:在字符串的开头添加一个字符 c.操作2:在字符串的 ...

  10. js 动画提示数据有变化

    let groupZiArray = $.....; for (let i = 1; i < groupZiArray.length; i++) { let $groupZi = $(group ...