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

计算监控属性构造参考

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

  1. ko.computed( evaluator [, targetObject, options] ) - 这种形式是创建一个计算监控属性最常见的情况。
  • evaluator - 用于返回计算值的函数。
  • targetObject-如果给出定义的值this时KO调用回调函数。参见部分第三章 计算监控属性(1) 使用计算监控属性以获取更多信息。
  • options - 计算监控属性的其他属性的对象。请参见下面的完整列表。
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方法会被触发。当元素的绑定被模版或者控制流程绑定方法移除的时候,此功能是用来释放依赖属性。

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 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 ...
});
复制代码

 

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

作者: smallprogram
感谢您的阅读。喜欢的、有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力。欢迎转载!另外,文章在表述和代码方面如有不妥之处,欢迎批评指正。留下你的脚印,欢迎评论!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值