5.参考

下面的内容描述了如何构建和使用计算监控。

1. 构建一个计算监控

可以用如下的形式构建一个计算监控:

  1. ko.computed( evaluator [, targetObject, options] ) — 这是最常见的构建计算监控的形式。

    • evaluator — 一个用来计算当前计算监控值的函数
    • targetObject — 如果提供该值,该值定义了当KO请求你的回调函数时函数内部this的值。请看管理this章节查看更多信息。
    • options — 一个包含计算监控特性属性设置的对象,下面有详细列表。
  2. ko.computed( options ) — 一个参数形式创建的计算监控接收一个javascript对象并包含如下属性。
    • read - 必要属性。一个用于计算当前计算监控当前值的函数。
    • write — 可选。如果有,计算监控变为可写。这是一个函数,接收其他代码想要写入计算监控的值。具体功能由你的自定义逻辑对传入值的处理,一般是把值传回底层依赖。
    • owner — 可选。如果有,定义当KO请求你的readwrite函数时函数内部this的值。
    • pure — 可选。如果选项为true,计算监控会变为纯计算监控。该项可由ko.pureComputed来构造计算监控来替代。
    • deferEvaluation —可选。如果该项为true,计算监控的值不会进行求值,直到确实有某些代码访问它的值或手动订阅它。默认情况下,计算监控在构建之后立即进行求值。
    • disposeWhen — 可选。如果选项为true,该函数在每次重新求值之前执行,用于决定计算监控是否应该被释放。结果为true会触发释放所有计算监控。
    • disposeWhenNodeIsRemoved — 可选。如果有,计算监控的释放会在规定的DOM节点被KO移除的时候触发。此功能是用来处理计算监控绑定节点,节点通过模板和控制流绑定删除时释放计算监控。
  3. ko.pureComputed( evaluator [, targetObject] ) — 用提供的求值函数和用来定义this的可选对象来构建纯计算监控。不像ko.computed,此方法不接受可选参数。
  4. ko.pureComputed( options ) — 通过提供一个javascript对象来构建一个纯计算监控。对象接受read,write,和owner选项如前面所述。

2. 使用计算监控

一个计算监控提供如下一些方法:

  • dispose() —手动释放计算监控,清除所有依赖的订阅。如果你想停止正在刷新数据的计算监控或者清理由于存在依赖的监控而不能清理的计算监控的内存。
  • extend(extenders) —给计算监控提供扩展器。
  • getDependenciesCount() — 返回当前计算监控的依赖数量。
  • getSubscriptionsCount( [event] ) — 返回计算监控当前订阅的数量(无论是来自计算监控还是手动订阅)。可选的,传入一个事件名(比如change)会返回当前事件的订阅数量。
  • isActive() — 返回计算监控的值在之后是否可能会被更新。如果计算监控没有依赖,会处于闲置状态。
  • peek() —返回计算监控当前值并不创建依赖。
  • subscribe( callback [,callbackTarget, event] ) — 注册一个手动订阅来接收计算监控改变的通知。

3. 确定监控类型

要检测一个属性是监控、计算监控还是其他,可以使用如下方法:

  • ko.isObservable — 如果是监控对象,监控数组和计算监控,返回true
  • ko.isWritableObservable —如果是监控对象,监控数组和可写计算监控,返回true(也可写作ko.isWriteableObservable)。
  • ko.isComputed — 如果是计算监控,返回true
  • ko.isPureComputed — 如果是纯计算监控,返回true

4. 使用计算监控上下文

在执行计算监控求值函数期间,你能访问ko.computedContext来获取当前计算监控属性的信息。它提供了如下方法:

  • isInitial() —如果计算监控是第一次调用求值函数,该函数返回true,否则返回false。对于纯计算监控,该方法一直是undefined
  • getDependenciesCount() — 返回在当前求值过程中计算监控被检测到的依赖数量。

    *注意: ko.computedContext.getDependenciesCount()等同于调用计算监控本身调用getDependenciesCount()。该方法也存在的原因是让ko.computedContext提供一种方式在计算监控构建完成之前,即第一次求值之前可以统计依赖数量。
    例子:

    var myComputed = ko.computed(function() {// ... Omitted: read some data that might be observable ...// Now let's inspect ko.computedContextvar 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 ...
    });

这些函数通常只会在某些复杂场景特别有用,比如当计算监控的主要目的是触发它的求值函数的一些副作用,你只想在第一次运行的时候执行一些配置逻辑,或者仅仅在它至少有一个依赖的情况下执行(因此可能在之后会被重新调用)。大多数计算监控属性不需要关心之前它们是否执行过,或者它们有多少依赖。

转载于:https://www.cnblogs.com/DHclly/p/6291324.html

Knockout v3.4.0 中文版教程-9-计算监控-API参考相关推荐

  1. Knockout v3.4.0 中文版教程-6-计算监控-可写的计算监控

    2.可写的计算监控 初学者可能想要跳过本节 - 可写的计算监控是相当高级的部分,在大多数情况下不是必需的. 通常,计算监控是一个通过其他监控值计算出的值,因此是只读的. 令人惊讶的是,可以使计算监控值 ...

  2. Knockout v3.4.0 中文版教程-14-控制文本内容和外观-style绑定

    5. style绑定 目的 style绑定用来给关联的DOM元素添加或移除一个或多个样式值.在如下情况很有用,比如,当某些值为负时,高亮显示,或者设置容器元素的宽度来匹配数值的改变. (注意:如果你不 ...

  3. kurento教程_Kurento应用开发指南(以Kurento 6.0为模板) 之七:Kurento API 参考

    13.1 Kurento API 参考 Kurento媒体服务器提供了一套API给高级语言使用,以用于应用程序开发人员来控制它. 这些API可以被用于Java或Javascript开发的Kurento ...

  4. ​itools官方下载2015 v3.1.7.0 中文版

    itools官方下载2015 v3.1.7.0 中文版 软件大小:16MB 软件语言:简体中文 软件类别:手机工具 软件授权:官方版 更新时间:2015-02-04 应用平台:/Win8/Win7/W ...

  5. Corel Knockout 2.0使用教程

    Corel Knockout 2.0使用教程 2009年07月19日 21:43 一.将knockout 2.0安装在Photoshop中 下载knockout 2.0后,必须安装在photoshop ...

  6. 《Adobe Flash CS5 ActionScript 3.0中文版经典教程》——1.3 使用代码片断添加ActionScript...

    本节书摘来自异步社区<Adobe Flash CS5 ActionScript 3.0中文版经典教程>一书中的第1章,第1.3节,作者: [美]Adobe公司 更多章节内容可以访问云栖社区 ...

  7. uTorrent v3.5.0.44294 专业中文版

    uTorrent是一款专业的BT种子下载工具,本软件大部分文件都以BT种子的形式发布在网络上,游戏,电影,等这些更是BT下载的热门资源,多数人使用迅雷来下载,但也有部分的人选择使用像本软件这种专业的B ...

  8. WORKNC 2021.0中文版软件+安装教程

    WORKNC 2021.0中文版软件+安装教程 下载链接: https://pan.baidu.com/s/1KVFm_2JG9-jUVkzLuECx3w 提取码: pzyx

  9. Lumion8.0中文版安装教程(附软件下载)

    Lumion是一款可以实时的3D可视化工具,用来制作电影和静帧作品,涉及到的领域包含建筑.规划和设计: Lumion的强大在于它可以提供优秀的图像,并将快速和高效工作流程结合在一起,为使用者节省时间. ...

最新文章

  1. 云+社区小程序知识周,等你来挑战!
  2. AI视觉组基于ESP32的裁判系统第一版本设计要求
  3. Docker安装(Mac)
  4. IVs提取合并工具ivstools
  5. 装饰器模式与java.io包
  6. 结合源码深入理解Android Crash处理流程
  7. 自带数据线的迷你数显充电宝,好用到哭
  8. 帮助中心 开源_对开源的贡献帮助我获得了Microsoft的实习机会。 这就是它可以为您提供帮助的方式。
  9. SecureWatch和人工智能为疫情期间更安全有效地监控房地产开发提供助力
  10. Unity界面插件NGUI基础教程
  11. makefile 使用 Tricks
  12. 服务器cp所以型号,云服务器cp
  13. wps的range对象
  14. java webservice 实例
  15. 小爱同学服务器维修,小爱同学TTS服务(2019年5月29日更新可用版本)
  16. 计算机数值换算在线,计算机单位换算(计算机单位换算在线)
  17. 安徽大学计算机专业毕业论文格式,安徽大学本科毕业论文格式.doc
  18. 前端开发3年计划,前端应届生如何做一个职业规划
  19. 何为数码相机EXIF信息的等效焦距
  20. iFunk执政官游戏本强势上线,开启畅玩之旅

热门文章

  1. python面向对象编程的三大特性_Python面向对象总结及类与正则表达式详解
  2. 华硕服务器芯片,全球首款875P芯片组双至强服务器主板华硕PC-DL震撼上市
  3. python函数列表永久修改_python 禁止函数修改列表的实现方法
  4. 【超实用】HCIE-RS面试真题分享
  5. 轻松搭建基于 Serverless 的 Egg.js Web 应用
  6. python人头识别_python+opencv实现人头检测
  7. 存在就不插入_动画:面试官问我插入排序和冒泡排序哪个更牛逼?
  8. ajax.filter json过滤,$.ajax()的dataFilter方法
  9. python数组求和函数_python数据分析之Numpy数据库第三期数组的运算
  10. canva画图 图片居中裁剪_Canvas裁剪图片(截选框可拖拽)