更改 observable 但不通知 knockout.js 中的订阅者

2023-12-03

有没有办法忽略可观察值变化的订阅者。我想更改可观察值的值,但不使用 Knockout.js 为订阅者执行它


通常这是不可能或不可取的,因为它可能会导致依赖链中的事物不同步。使用限制扩展器通常是限制依赖项接收的通知量的好方法。

但是,如果您确实想这样做,那么一种选择是覆盖notifySubscribers在可观察对象上运行函数并让它检查标志。

以下是将此功能添加到可观察对象的扩展:

ko.observable.fn.withPausing = function() {
    this.notifySubscribers = function() {
       if (!this.pauseNotifications) {
          ko.subscribable.fn.notifySubscribers.apply(this, arguments);
       }
    };

    this.sneakyUpdate = function(newValue) {
        this.pauseNotifications = true;
        this(newValue);
        this.pauseNotifications = false;
    };

    return this;
};

您可以将其添加到可观察的内容中,例如:

this.name = ko.observable("Bob").withPausing();

然后您可以通过执行以下操作来更新它而无需通知:

this.name.sneakyUpdate("Ted");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改 observable 但不通知 knockout.js 中的订阅者 的相关文章

随机推荐

  • MongoDB-Java 驱动程序:插入失败时捕获异常

    我正在做一个非常基本的插入 如下所示 try DB mongoDb mongo getDB databaseName DBCollection collection mongoDb getCollection collectionName
  • Postgres 中的存储过程是否在数据库事务中运行?

    如果存储过程在中间失败 那么从 SP 开头开始的更改是否会隐式回滚 或者我们是否必须编写任何显式代码来确保 SP 仅在数据库事务中运行 严格来说 Postgres 并没有have 存储过程如 ISO IEC 标准第 11 版之前的定义 该术
  • 在过程 MySQL 5.5.x 中获取 SQLEXCEPTION 消息

    我怎样才能得到错误文本MySQL 5 5存储过程时SQLEXCEPTION occurs 我需要一些类似的东西来看看出了什么问题 DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOS
  • JQuery 和 Chrome 扩展

    我正在尝试开发一个测试 chrome 扩展 以了解 JQuery 如何与 chrome 扩展配合使用 从提供的代码来看 我认为它应该将弹出窗口的背景更改为黄色 我尝试使用内容脚本和背景加载 jquery js 当我通过后台脚本命令加载它时
  • 在 PHP 中备份和恢复 MySQL 数据库

    我正在尝试使用 PHP 备份和恢复 MySQL 数据库 Backup dbhost localhost dbuser root dbpass dbpass dbname test output D backup test sql exec
  • 发布带有位置的状态更新

    当您向 Facebook 发布定期状态更新时 它会跟踪您当前的位置并在时间旁边提供 附近的 城市 即 5月24日附近纽约州纽约市 请注意 这是not办理登机手续 我正在尝试做同样的事情 而不搜索页面 地点 id 和签入 我尝试过发布坐标与纬
  • 捆绑包 ID 和 SKU 可以在另一个 iTunes Connect 帐户中重复使用吗?

    我正在从 iTunes Connect 中删除一个应用程序 以便将其重新上传到新公司的新帐户中 从 iTunes Connect 开发者指南中 我了解到只要是从原始帐户以外的另一个帐户完成的 应用程序名称就可以重复使用 但是 Bundle
  • 使用查找/替换来清除 vbNullString

    我有一个电子表格 它在我们的 Enterprise 系统中生成为报告并下载到 Excel 电子表格中 生成的电子表格中的空白单元格并不是真正的空白 即使不存在任何数据 并且空白单元格不包含 空格 字符 例如 A2 中的以下单元格公式返回 T
  • 如何在 Tensorflow 中使用 freeze_graph.py?

    我在冻结 Tensorflow 中的模型时遇到问题 我想在 Unity 中使用它 但它们需要将冻结图作为 bytes 文件而不是 pb 除了 freeze graph py 之外 还有其他方法获取字节文件吗 我不断收到此错误 类型错误 na
  • 在 SQL (MySQL) 中根据今天的日期返回查询结果

    我有一个疑问 我得到了帮助 但我陷入了另一个困境 我的代码是 SELECT a name COUNT AS num FROM table2 b INNER JOIN table1 a ON b status id a id GROUP BY
  • 在网络浏览器中欺骗 URL

    假设我获得了某个页面的源代码 例如http example com 我现在想将此源代码写入 Web 浏览器 使用类似以下内容 myWebBrowser Navigate about blank myWebBrowser Document W
  • 发布到 beta.6 后 angularfire2 无法工作

    angularfire2 发布到 beta 6 后 我无法正确执行我的 Ionic2 应用程序 这就是问题所在 21 54 35 lint finished in 4 51 s 21 54 35 typescript uy Network
  • 带百分比的 SVG 进度圈

    我使用此处找到的代码创建进度圈 http codepen io JMChristensen pen Ablch 但我不希望它那么大 所以我将内圆和外圆的圆半径更改为 40 而不是 90 问题是在我这样做之后 显示百分比的圆停止工作 无论我在
  • 传递给函数的最佳方式是什么 - 变量还是数组/对象?

    将数据传递给函数 变量或数组 对象 的最佳实践是什么 例如 我需要大多数功能的用户信息 我应该传递包含所有信息的完整用户对象 还是只传递我需要的信息 始终是用户名 有时是 id 很少有其他用户信息 function do something
  • 将三个字符的语言代码 (ISO 639-2) 转换为两个字符的代码 (ISO 639-1)

    我正在使用文本转语音 TTS 引擎开发 Android 应用程序 TTS 组件返回可用语言列表作为列表Locale对象 但这两种方法Locale getLanguage and Locale getISO3Language每个Locale对
  • 如何在 Enter 按键时关闭键盘

    我想在按 RETURN 键时关闭键盘 我尝试过将按钮放在视图的背面 但是我怎样才能通过按 RETURN 键来做到这一点呢 BOOL textFieldShouldReturn UITextField textField textField
  • 打开文件对话框以获取 FTP 位置

    当用户浏览 ftp 位置时 我遇到打开文件对话问题 我从 openFileDialogue 获得的路径是本地路径 本地设置临时文件夹 而不是我选择的实际 ftp 路径 如何获取实际的 ftp 路径 您正在哪个版本的 Windows 上运行
  • 获取状态消息的隐私设置?

    有谁知道是否可以查询隐私设置以获取状态更新 我知道您可以将它们用于相册 但对于我的应用程序来说 能够提取不久前的随机状态消息并说 您与所有人分享了这篇文章 您今天还会这样做吗 会很有用 看看人们对在线分享的态度如何变化 我不追求任何花哨的东
  • 如何使用“cp”命令排除特定目录?

    我想复制目录中的所有文件 除了特定子目录中的某些文件 我注意到cp命令没有 exclude选项 那么 我怎样才能实现这一目标呢 rsync快速且简单 rsync av progress sourcefolder destinationfol
  • 更改 observable 但不通知 knockout.js 中的订阅者

    有没有办法忽略可观察值变化的订阅者 我想更改可观察值的值 但不使用 Knockout js 为订阅者执行它 通常这是不可能或不可取的 因为它可能会导致依赖链中的事物不同步 使用限制扩展器通常是限制依赖项接收的通知量的好方法 但是 如果您确实