KnockoutJS 3.X API 第三章 计算监控属性(5) 参考手册
计算监控属性构造参考
计算监控属性可使用以下形式进行构造:
ko.computed( evaluator [, targetObject, options] )- 这种形式是创建一个计算监控属性最常见的情况。evaluator- 用于返回计算值的函数。targetObject-如果给出定义的值this时KO调用回调函数。参见部分第三章 计算监控属性(1) 使用计算监控属性以获取更多信息。options- 计算监控属性的其他属性的对象。请参见下面的完整列表。ko.computed( options )- 该单个参数形式用于创建一个计算观察到接受下列任何性质的JavaScript对象。read- 必写。用来评估计算监控属性的当前值的函数。write- 可选的。如果给出,使得计算监控属性到可写。这是接收其他值并赋值给计算监控属性的函数。这是给你提供自定义逻辑的地方。owner- 可选的。如果给出定义的值this时KO调用您read或write回调对象。pure- 可选的。如果此选项true,计算观察到的将被设置为一个Pure computed observables。此选项可替代为ko.pureComputed构造。deferEvaluation- 可选的。如果这个选项true,那么计算监控属性的值将不会被计算。disposeWhen- 可选的。传入方法。如果给出,该传入方法将会在每一次运算结束之后被调用来释放依赖属性。真正的结果就是触发依赖属性的disposal方法。disposeWhenNodeIsRemoved- 可选的。,传入方法。如果给出,当指定的DOM元素被KO删除的时候依赖属性的disposal方法会被触发。当元素的绑定被模版或者控制流程绑定方法移除的时候,此功能是用来释放依赖属性。
ko.pureComputed( evaluator [, targetObject] )-构造一个Pure computed observables,使用this来调用evaluator或者optional,他不像ko.computed,这种构造方式不包含options参数。ko.pureComputed( options )-构造一个Pure computed observables的另一种方式,她只包含options参数。具体参数内容可以参考上面的computed(options)。
计算监控属性的函数:
一个计算监控属性提供以下函数:
dispose()- 清除所有订阅依赖关系。extend(extenders)-应用给定的扩展应用到计算监控属性。getDependenciesCount()- 返回计算监控属性的依赖性的当前数目。getSubscriptionsCount( [event] )-返回用户的订阅数量。或者,通过事件的名称(如"change")返回刚刚订阅的计数。isActive()- 返回依赖属性在以后是否会被更新,一个依赖属性如果没有依赖关系是无效的。peek()- 返回当前依赖属性的值而无需创建依赖关系(可以参考第三章 计算监控属性(3) KO如何实现依赖追踪中的peek)。subscribe( callback [,callbackTarget, event] )-注册一个手动订阅来通知依赖属性的变化。
确定监控属性的类型
ko.isObservable-当是observables、observableArrays或者 computed observables时返回true。ko.isWritableObservable-当是observables、observableArrays或者可写的 computed observables时返回true。ko.isComputed-当是计算监控属性时返回true。ko.isPureComputed-当是Pure computed observables时,返回ture.
使用计算监控属性的context
一个计算监控属性函数的执行过程中,您可以访问ko.computedContext获取有关当前计算监控属性信息。它提供了以下功能:
isInitial()-当计算监控属性首次运行时,返回true,其他时候返回false。对于Pure computed observables,isInitial()始终undefined。getDependenciesCount()- 返回计算监控属性的依赖性的当前数目。- 注:
ko.computedContext.getDependenciesCount()等同于调用计算监控属性的getDependenciesCount()。
- 注:
例:
var myComputed = ko.computed(function() {
// ... Omitted: read some data that might be observable ...
// Now let's inspect ko.computedContext
var isFirstEvaluation = ko.computedContext.isInitial(),
dependencyCount = ko.computedContext.getDependenciesCount(),
console.log("Evaluating " + (isFirstEvaluation ? "for the first time" : "again"));
console.log("By now, this computed has " + dependencyCount + " dependencies");
// ... Omitted: return the result ...
});
上述介绍的这些构造方法和函数通常只在高级场景非常有用。
KnockoutJS 3.X API 第三章 计算监控属性(5) 参考手册的更多相关文章
- KnockoutJS 3.X API 第三章 计算监控属性(1) 使用计算监控属性
计算监控属性(Computed Observables) 如果你有一个监控属性firstName,和另一个lastName,你要显示的全名?可以使用计算监控属性来实现-它依赖于一个或多个其他监控属性, ...
- KnockoutJS 3.X API 第三章 计算监控属性(3) KO如何实现依赖追踪
KO是如何实现自动更新的 初学者可以掠过该篇,如果你是一个刨根问底的开发者,那本节将告诉你KO是如何实现依赖追踪和UI自动更新的. 其实很简单,KO的依赖追踪算法如下: 当你声明一个计算监控属性,KO ...
- KnockoutJS 3.X API 第三章 计算监控属性(2) 可赋值的计算监控属性
.liveexample{ padding: 1em; background-color: #eeeedd; border: 1px solid #ccc; max-width: 655px; fon ...
- KnockoutJS 3.X API 第三章 计算监控属性(4)Pure computed observables
Pure computed observables Pure computed observables是KO在3.2.0版本中推出的.她相对于之前的ComputedObservables有很多改进: ...
- KnockoutJS 3.X API 第四章 数据绑定(5) 控制流component绑定
本节目录: 一个例子 API 备注1:仅模板式的component 备注2:component虚拟绑定 备注3:传递标记到component绑定 内存管理 一个例子 First instance, w ...
- Knockout应用开发指南 第二章:监控属性(Observables)
原文:Knockout应用开发指南 第二章:监控属性(Observables) 关于Knockout的3个重要概念(Observables,DependentObservables,Observabl ...
- KnockoutJS 3.X API 第六章 组件(4) 自定义元素
自定义元素提供了一种将组件注入视图的方便方法. 本节目录 介绍 例子 传递参数 父组件和子组件之间的通信 传递监控属性的表达式 将标记传递到组件中 控制自定义元素标记名称 注册自定义元素 备注1:将自 ...
- KnockoutJS 3.X API 第六章 组件(3) 组件绑定
组件绑定将指定的组件注入到元素中,并且可选地将参数传递给它. 本节目录 一个例子 API 组件生命周期 备注1:仅限模板组件 备注2:使用没有容器元素的组件 备注3:将标记传递给组件 处置和内存管理 ...
- KnockoutJS 3.X API 第四章 表单绑定(11) options绑定
目的 options绑定主要用于下拉列表中(即<select>元素)或多选列表(例如,<select size='6'>).此绑定不能与除<select>元素之外的 ...
随机推荐
- Win7下硬盘安装Linux双系统
Win7下硬盘安装CentOS6.2 一.准备工作:划出磁盘空闲空间和准备安装文件 参考文献: [Win7下硬盘安装Linux总结(CentOS)]来源:Linux社区 作者:lixianlin ...
- AKI
KDIGO 2012定义:尿量<0.5ml/kg/h 6h+:scr上升50%+ 7d-:scr上升26.5 2d- 但面对录入窗口,又想不出说什么了,继续看aki?刚才想的是什么呢?入冬,好像 ...
- (转)【推荐】初级.NET程序员,你必须知道的EF知识和经验
转自:http://www.cnblogs.com/zhaopei/p/5721789.html [推荐]初级.NET程序员,你必须知道的EF知识和经验 阅读目录 [本文已下咒.先顶后看,会涨 ...
- ElasticSearch学习笔记-02集群相关操作_cat参数
_cat参数允许你查看集群的一些相关信息,如集群是否健康,有哪些节点,以及索引的情况等的. 检测集群是否健康 curl localhost:9200/_cat/health?v 说明: curl 是一 ...
- Android PullToZoomListView实现放大回弹效果
另外一个相同项目的地址https://github.com/Frank-Zhu/PullZoomView 转自http://blog.csdn.net/wangjinyu501/article/det ...
- H5 canvas填充文字自动换行
canvas是H5中非常重要,非常常用,也是非常强大的一个新标签,美中不足的事,canvas中没没有自动换行的属性,我的第一反应是,字符串截取,然后计算每行的距离来实现自动换行.. 然后百度了一下,已 ...
- Eclipse 包排版问题
问题描述: 在Eclipse中,项目结构如下所示: 这样的显示方式,查找内容太不方便.使用不习惯. 解决方法: Eclipse中默认包的显示方式为flat,使其改为Hierarchical. 操作步骤 ...
- .NET JSON对象序列化和反序列化
class Program { static void Main(string[] args) { Console.WriteLine("========================== ...
- ENode 2.0 - 深入分析ENode的内部实现流程和关键地方的幂等设计
前言 ENode是一个基于消息的架构,使用ENode开发的系统,每个环节都是处理消息,处理完后产生新的消息.本篇文章我想详细分析一下ENode框架内部是如何实现整个消息处理流程的.为了更好的理解我后面 ...
- 【吐血分享】SQL Server With As 递归获取层级关系数据
纯洁的一周又开始了,今天看到一则新闻,笑尿了,和袁友们一起娱乐下 最近两月在做基于Saas模式的人力资源管理产品,平常数据库设计我经常会遇到如下需求场景: 以前商城类网站在设计类型表的时候,设计成单表 ...