knockoutjs 经验总结

http://knockoutjs.com/documentation/introduction.html


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到页面

 

 

 

原文地址:https://www.cnblogs.com/jason-beijing/p/10327925.html

时间: 2024-10-11 23:31:40

knockoutjs 经验总结的相关文章

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

一年开发ASP.NET MVC4项目所用所学技术经验总结 阅读目录 文章背景 前端所用技术摘要 后端所用技术摘要 1. 文章背景 本人2014年从Java转行到C#从事BS项目的开发,刚开始接触的是ASP.NET WebForm,结果对于我这种从jsp+servlet时代的人非常的不适应,开发者不能自由的操作HttpContext及其原始的Web命名空间中的类库来开发,而是全部封装成基于事件的机制来操作,非常的别扭.后面就找到了ASP.NET MVC这个框架.发现不错,而且从Java Web方向

微信小程序豆瓣电影项目的改造过程经验分享

在学习微信小程序开发过程中,一部分的难点是前端逻辑的处理,也就是对前端JS的代码编辑:一部分的难点是前端界面的设计展示:本篇随笔基于一个豆瓣电影接口的小程序开源项目进行重新调整,把其中遇到的相关难点和改进的地方进行讨论介绍,希望给大家提供一个参考的思路,本篇随笔是基于前人小程序的项目基础上进行的改进,因此在开篇之前首先对原作者的辛劳致敬及感谢. 1.豆瓣电影接口的小程序项目情况 豆瓣电影接口提供了很多相关的接口给我们使用,豆瓣电影接口的API地址如下所示:https://developers.d

【Spark深入学习 -14】Spark应用经验与程序调优

----本节内容------- 1.遗留问题解答 2.Spark调优初体验 2.1 利用WebUI分析程序瓶颈 2.2 设置合适的资源 2.3 调整任务的并发度 2.4 修改存储格式 3.Spark调优经验 3.1 Spark原理及调优工具 3.2 运行环境优化 3.2.1 防止不必要的分发 3.2.2 提高数据本地性 3.2.3 存储格式选择 3.2.4 选择高配机器 3.3 优化操作符 3.3.1 过滤操作导致多小任务 3.3.2 降低单条记录开销 3.3.3 处理数据倾斜或者任务倾斜 3.

《运营笔记》:主要是猫扑论坛运营经验。3星。

书中有不少运营的经验,其中以作者在猫扑的运营经验为主.条理略差,在移动互联网时代这些经验的价值也在逐步降低中.总体来说还是值得看一看的.我的评价是3星. 以下是书中一些内容的摘抄: 1:其实真正有消费能力的用户,白天可能根本不会上你的平台,因为他们都有自己繁忙的事情要处理.他们很可能晚上出现.如果你第一次不理他,第一次不理他,第三次还是不理他,那么,很有可能意味着你将失去他了.p56 2:如果帖子内容里面含有视频.图片,可以在标题里加上(图).(视频).(图+视频)的字样.p59 3:最好的用户

ZooKeeper和Curator相关经验总结

一.关于ZooKeeper的watch用法,需要注意 详细说明如下: ZooKeeper Watches All of the read operations in ZooKeeper - getData(), getChildren(), and exists() - have the option of setting a watch as a side effect. Here is ZooKeeper's definition of a watch: a watch event is o

基于MVC+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录

最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重构完善过程中,很多细节花费不少时间进行研究和提炼,一步步走过来,也积累了不少经验,本系列将主要介绍我在进一步完善我的Web框架基础上积累的经验进行分享,本随笔主要介绍利用jQuery Tags Input 插件显示选择记录. 我在利用jQuery Tags Input 插件之前,一直想找一个合适的J

基于MVC+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面

最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重构完善过程中,很多细节花费不少时间进行研究和提炼,一步步走过来,也积累了不少经验,本系列将主要介绍我在进一步完善我的Web框架基础上积累的经验进行分享,本随笔主要介绍使用EasyUI的树控件构建Web界面的相关经验. 在很多界面设计上,我们可能都需要引入树列表控件,这个控件可以用zTree来实现,也

android菜鸟必看的60个技术经验

最初,android工程师在开发app时,会遇见各种各样的问题,比如数据加载.信息同步等等,其主要原因才开始,会android项目开发(http://www.maiziedu.com/course/android/)不熟悉,还有就是不知道如何处理才妥当,下面小编就整理了网上各位android工程师的一些技术经验分享给大家:  1. 全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效.  2. 数据库表段

一个大水的微信入坑经验

最近搞微信整的我好无语,原因是自己太水了.总结了几点经验如下: 部署客户的微信时,最好把自己的测试的账号先取消关注了在部署.这样有助于及早的发现出现的问题. 菜单中的有网页授权时,首先那个appid一定要写成客户的,不要写自己的,切记!(我犯了好几次这样的错误,无语...)微信公众平台的网页授权的验证要配置域名,这个一般没啥问题. 一般在配置文件中,会有配置appid的key,如果没有,就去微信处理的核心类找,一般都会在配置文件中放着.记得改成客户的.(这个错误我也犯了多次,无语...) 如果发