KnockoutJS 3.X API 第三章 计算监控属性(5) 参考手册

计算监控属性构造参考

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

  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 ...
});

上述介绍的这些构造方法和函数通常只在高级场景非常有用。

时间: 2024-12-26 07:45:12

KnockoutJS 3.X API 第三章 计算监控属性(5) 参考手册的相关文章

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

KO是如何实现自动更新的 初学者可以掠过该篇,如果你是一个刨根问底的开发者,那本节将告诉你KO是如何实现依赖追踪和UI自动更新的. 其实很简单,KO的依赖追踪算法如下: 当你声明一个计算监控属性,KO立即调用其相关的函数来获取其初始值. 当相关函数正在运行,KO将建立一个订阅到相关监控属性(包括其他计算监控属性)并读取他们的值.订阅回调函数设置为订阅函数再次运行,循环的这个过程. 当有新的值,KO会通知你的计算监控属性将值反馈给用户. 采用PEEK控制依赖 Knockout的自动依赖跟踪通常不是

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

Pure computed observables Pure computed observables是KO在3.2.0版本中推出的.她相对于之前的ComputedObservables有很多改进: 防止内存泄漏 减少计算开销 在PureComputed函数中,随着相关监控属性值变化的时候,在两种状态之间切换. 每当它没有 值变化的时候,它处于睡眠状态.当进入睡眠状态时,其配置的所有订阅它的依赖.在这种状态下,它不会订阅任何监控属性.如果当它被读取,返回的也是睡眠状态的值. 每当它的 值变化的时

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

.liveexample { padding: 1em; background-color: #eeeedd; border: 1px solid #ccc; max-width: 655px; font-size:18px; 可赋值的计算监控属性 可赋值的计算监控属性是非常专业的,大多数情况下一般用不到,初学者可以跳过这一节 通常情况下,计算监控属性一般情况下是只读的.我们可以通过使用自己的回调函数让计算监控属性变为可赋值状态. 您可以用自己的定制逻辑让计算监控属性可写.就像将空属性,可以使用

初学knockoutjs记录8——Computed observables依赖监控(5 Computed Observables Reference 计算监控属性参考)

Computed Observables Reference 计算监控属性参考 下述文档描述了怎样构造和使用计算监控属性. Constructing a computed ovservable 构造计算监控属性 一个计算监控属性可以使用下列任一方式进行构造: 1. ko.computed ( evaluator [, targetObject, options] ) -- 这种方式是创建计算监控属性最常用的方式,支持大多数场景. evaluator -- 一个函数用来评估计算当前计算监控属性的值

初学knockoutjs记录5——Computed observables依赖监控(2 Writable computed observables可写计算监控属性)

Writable computed observables 可写计算监控属性 可写监控属性的要求较高,并且在大多数场合下并不常用. 一般来说,计算监控属性拥有一个有其它监控属性计算得来的值,也正因如此它是通常是只读的,看起来很奇怪,但是,确实有可能让计算监控属性成为可写的,你只需要提供回调函数合理的使用可写的值做一些事情. 你可以像常规的监控属性那样使用计算监控属性,只要你有自定义的逻辑用来截获所有的读写操作.就像普通监控属性一样,你可以使用链接语法编写拥有多个监控属性或计算监控属性的对象模型,

初学knockoutjs记录7——Computed observables依赖监控(4 Pure computed observables 纯计算监控属性)

Pure computed observables 纯计算监控属性 纯计算监控属性在knockout3.2.0中引入,给在大多数场合下常规的计算监控属性提供了一个速度和内存性能更好选择.这是因为纯计算监控属性在它本身没有被订阅的情况下不需要维护它的依赖. 它的特性: Prevents memore leaks 防止内存泄露.纯计算监控属性不再是一个程序引用,但是它的整个依赖依然存在. Reduces computation oberhead 减少计算开销.当值不再被监控时不再进行计算监控属性的计

第二章:监控属性(Observables)

关于Knockout的3个重要概念(Observables,DependentObservables,ObservableArray),本人无法准确表达它的准确含义,所以暂定翻译为(监控属性.依赖监控属性和监控数组),如果有好的建议请指正,多谢. 1 创建带有监控属性的view model Observables Knockout是在下面三个核心功能是建立起来的: 监控属性(Observables)和依赖跟踪(Dependency tracking) 声明式绑定(Declarative bind

KnockoutJS 3.X API 第六章 组件(2) 组件注册

要使Knockout能够加载和实例化组件,必须使用ko.components.register注册它们,从而提供如此处所述的配置. 注意:作为替代,可以实现一个自定义组件加载器(自定义加载器下一节介绍),通过自己的约定获取组件,而不是显式配置. 本节目录 将组件注册为viewmodel/template 指定视图模型 构造函数 共享对象实例 一个createViewModel工厂函数 一个AMD模块,其值描述一个viewmodel 指定模板 现有元素ID 现有元素实例 一串标记 DOM节点数组

KnockoutJS 3.X API 第五章 高级应用(5) 使用预处理扩展Knockout绑定语法

注意:这是一种高级技术,通常仅在创建可重用绑定或扩展语法的库时使用. 这不是你通常需要做的时候使用Knockout构建应用程序. 从Knockout 3.0开始,开发人员可以通过提供在绑定过程中重写DOM节点和绑定字符串的回调来定义自定义语法. 预处理绑定字符串 您可以通过为特定绑定处理程序(例如click,visible或任何自定义绑定处理程序)提供绑定预处理程序,来挂钩Knockout的逻辑来解释数据绑定属性. 为此,将预处理函数附加到绑定处理程序: ko.bindingHandlers.y