计算监控属性构造参考

计算监控属性可使用以下形式进行构造:

  1. ko.computed( evaluator [, targetObject, options] ) - 这种形式是创建一个计算监控属性最常见的情况。
    • evaluator - 用于返回计算值的函数。
    • targetObject-如果给出定义的值this时KO调用回调函数。参见部分第三章 计算监控属性(1) 使用计算监控属性以获取更多信息。
    • options - 计算监控属性的其他属性的对象。请参见下面的完整列表。
  2. ko.computed( options ) - 该单个参数形式用于创建一个计算观察到接受下列任何性质的JavaScript对象。
    • read - 必写。用来评估计算监控属性的当前值的函数。
    • write- 可选的。如果给出,使得计算监控属性到可写。这是接收其他值并赋值给计算监控属性的函数。这是给你提供自定义逻辑的地方。
    • owner- 可选的。如果给出定义的值this时KO调用您readwrite回调对象。
    • pure- 可选的。如果此选项true,计算观察到的将被设置为一个Pure computed observables。此选项可替代为ko.pureComputed构造。
    • deferEvaluation- 可选的。如果这个选项true,那么计算监控属性的值将不会被计算。
    • disposeWhen- 可选的。传入方法。如果给出,该传入方法将会在每一次运算结束之后被调用来释放依赖属性。真正的结果就是触发依赖属性的disposal方法。
    • disposeWhenNodeIsRemoved- 可选的。,传入方法。如果给出,当指定的DOM元素被KO删除的时候依赖属性的disposal方法会被触发。当元素的绑定被模版或者控制流程绑定方法移除的时候,此功能是用来释放依赖属性。
  3. ko.pureComputed( evaluator [, targetObject] )-构造一个Pure computed observables,使用this来调用evaluator或者optional,他不像ko.computed,这种构造方式不包含options参数。

  4. 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 observablesisInitial()始终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) 参考手册的更多相关文章

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

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

  2. KnockoutJS 3.X API 第三章 计算监控属性(3) KO如何实现依赖追踪

    KO是如何实现自动更新的 初学者可以掠过该篇,如果你是一个刨根问底的开发者,那本节将告诉你KO是如何实现依赖追踪和UI自动更新的. 其实很简单,KO的依赖追踪算法如下: 当你声明一个计算监控属性,KO ...

  3. KnockoutJS 3.X API 第三章 计算监控属性(2) 可赋值的计算监控属性

    .liveexample{ padding: 1em; background-color: #eeeedd; border: 1px solid #ccc; max-width: 655px; fon ...

  4. KnockoutJS 3.X API 第三章 计算监控属性(4)Pure computed observables

    Pure computed observables Pure computed observables是KO在3.2.0版本中推出的.她相对于之前的ComputedObservables有很多改进: ...

  5. KnockoutJS 3.X API 第四章 数据绑定(5) 控制流component绑定

    本节目录: 一个例子 API 备注1:仅模板式的component 备注2:component虚拟绑定 备注3:传递标记到component绑定 内存管理 一个例子 First instance, w ...

  6. Knockout应用开发指南 第二章:监控属性(Observables)

    原文:Knockout应用开发指南 第二章:监控属性(Observables) 关于Knockout的3个重要概念(Observables,DependentObservables,Observabl ...

  7. KnockoutJS 3.X API 第六章 组件(4) 自定义元素

    自定义元素提供了一种将组件注入视图的方便方法. 本节目录 介绍 例子 传递参数 父组件和子组件之间的通信 传递监控属性的表达式 将标记传递到组件中 控制自定义元素标记名称 注册自定义元素 备注1:将自 ...

  8. KnockoutJS 3.X API 第六章 组件(3) 组件绑定

    组件绑定将指定的组件注入到元素中,并且可选地将参数传递给它. 本节目录 一个例子 API 组件生命周期 备注1:仅限模板组件 备注2:使用没有容器元素的组件 备注3:将标记传递给组件 处置和内存管理 ...

  9. KnockoutJS 3.X API 第四章 表单绑定(11) options绑定

    目的 options绑定主要用于下拉列表中(即<select>元素)或多选列表(例如,<select size='6'>).此绑定不能与除<select>元素之外的 ...

随机推荐

  1. 20151013 C# 第一篇 流程控制语句

    20151013 流程控制语句: 1.选择语句 if … else if...else 选择语句 if(布尔表达式){  语句块:} if(布尔表达式){  语句块1:}else{  语句块2:} i ...

  2. JAVA里的异常

    一.概念和分类 JAVA程序设计语言中,异常对象都是Throwable类的一个实例.Throwable分为Error和Exception. 其中,Error类层次结构描述了JAVA运行时系统的内部错误 ...

  3. 在JAVA中把JSON数据格式化输出到控制台

    public class ForMatJSONStr { public static void main(String[] args) { String jsonStr = "{\" ...

  4. Amazon的推荐系统

    本文引自http://blog.csdn.net/fwing/article/details/4942886 现在的推荐系统特别火啊.做得最好的应该是Amazon了. 上面是Amazon的图书推荐. ...

  5. HttpCookie加匿名类实现多语言

    突然想做一个多语言网站,确不知道怎么实现好,突然想到了HttpCookie,然后页面后台用匿名类实现语言的储存. string lan = Request["str_lan"]; ...

  6. Transactional replication-如何跳过一个事务

    在transactional replication, 经常会遇到数据同步延迟的情况.有时候这些延迟是由于在publication中执行了一个更新,例如update ta set col=? Wher ...

  7. Caused by: java.lang.UnsatisfiedLinkError...解决经历

    Caused by: java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapVOS_v2_1_3: findLibrary returned nu ...

  8. .Net平台下,分布式文件存储的实现

    遇到的问题 对于Web程序,使用一台服务器的时候,客户端上传的文件一般也都是存储在这台服务器上.但在集群环境中就行不通了,如果每个服务器都存储自己接受到的文件,就乱套了,数据库中明明有这个附件的记录, ...

  9. Linux Ubuntu上手动安装.NET Core SDK

    今天重装了一台Linux服务器的Ubuntu 14.04系统,需要重新安装.NET Core 1.0. 按照官网上的文档用apt-get命令进行安装: sudo sh -c 'echo "d ...

  10. 【转】yahoo前端优化军规

    雅虎给出了前端优化的34条法则(包括Yslow规则22条) 详细说明,下载转发 ponytail 的译文(来自帕兰映像). Minimize HTTP Requests 减少http请求 图片.css ...