如何使用 Knockout 3.0 取消对可观察数组的更改?

2024-01-16

我的数组发生了变化。我正在使用 Sanderson 最新的数组订阅方法来捕获添加/删除更改。在此订阅中,我打算捆绑并通过网络发送我的请求。如果请求因任何原因失败,我希望能够取消对集合的任何可能的更改。我已经验证该订阅在更改传播之前就已生效,因此我认为有一种方法可以说“停止,不要这样做”,但我不知道如何做。

以我为例...

self.SourceData = ko.observableArray(data);
self.SourceData.subscribe(function(changes) {
    var isAllGood = true;
    ko.utils.arrayForEach(changes, function(ch) {
        if (ch.value == doesNotMeetMyCondition) isAllGood = false;
    });
    if (!isAllGood) <STOP DON'T DO IT>
}, null, 'arrayChange');

当检查“this”时,我确实看到了带有标准 [callback, dispose, disposeCallback, target] 的 ko.subscription 对象,但似乎没有什么可以阻止不要这样做。

任何想法都会很有帮助。谢谢。


目前没有办法阻止变革的进行。

您可能会订阅beforeChange事件并缓存更改前数组的副本。就像是:

self.SourceData.subscribe(function(value) {
    /store copy, in case it needs to be restored
    self.beforeSourceData = value && value.slice();
}, null, "beforeChange");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Knockout 3.0 取消对可观察数组的更改? 的相关文章

随机推荐

  • kubernetes.default:名称无法解析

    我正在运行 OpenShift OpenShift 主控 v3 3 1 7 Kubernetes大师 v1 3 0 52492b4 但是尝试在 Jenkins 中运行构建 在 Pod 中运行 时遇到问题 这不是我尝试构建的 java 代码的
  • 何时绑定服务、何时不绑定服务

    我翻阅了 Android 文档 我很好奇 什么时候你会绑定服务而不是不绑定服务 它有什么优点 限制 什么时候你会绑定服务而不是不绑定服务 完整的答案需要 咳咳 一本书中的几页 在处理配置更改 例如屏幕旋转 时 绑定到服务会带来挑战 因此 在
  • 直方图,错误:plot.new() 中的错误:图形边距太大[重复]

    这个问题在这里已经有答案了 我必须在 R 中绘制 141 个直方图 我正在使用 Windows 8 然后我写道 par mfcol c 12 12 oma c 1 1 0 0 for m in 1 141 x lt precData m h
  • 防止 MSTest 复制/部署每个 dll

    从 Visual Studio 运行 MSTest 时 单元测试执行时间相对较快 当从命令行运行 MSTest 时 使用 testsettings 标志 执行需要很长时间 这是因为它花费了 95 的启动时间将 dll 复制到其 Out 文件
  • Android AlertDialog 可以根据每个请求动态更改文本

    我想显示一个 AlertDialog 其中一个选项可能会根据每个请求而更改 因此 例如 有一次我想显示 添加到联系人 选项 而另一次应该显示 从联系人中删除 选项 我的代码第一次确实可以工作 但是Android似乎缓存了AlertDialo
  • Android从不接收UDP数据包

    下面的代码会导致超时 它在非 Android Java 上运行良好 怎么了 Override public static void run System out println Local Machine IP addrStr toStri
  • 保留商品上的元数据,并在结帐完成时检索

    我试图在将某个项目添加到购物车时对其设置元数据 在每个页面重新加载时保留它 并在结账成功时检索元数据以传递到单独的 API 下面的代码是成功的 因为它在页面重新加载后回显元数据 因此我认为这是成功的 add action woocommer
  • 无法复制文件,即使在 C# 中授予了 FileIOPermission

    我正在尝试FileIOPermission在 Windows 7 中的 NET 3 5 中 我是 Windows XP 用户 并且因为我是管理员而被授予此权限 我写了下面的代码 测试一下是否可以写入C Program Files Outlo
  • 标签中的最大字符数(表名、列等)

    希望这个问题之前没有被问过 有谁知道域名的字符数限制吗 例如 如果我这样写 CREATE DOMAIN d complement activite etablissement AS character varying 它将创建一个名为的域
  • 更改 MongoDB 中现有用户的密码

    我有一个生产环境 我的 mongoDB 已启动并正在运行 DBA 要求我们更改用于身份验证的密码 执行此操作的一种方法是使用新密码再次运行 addUser 命令 如中所述更改密码 http learnmongo com posts quic
  • 如何将自定义序列化器与 Jackson 一起使用?

    我有两个 Java 类 我想使用 Jackson 将它们序列化为 JSON public class User public final int id public final String name public User int id
  • 使用声明性服务的 OSGi+Pax-Web 中的 GWT 问题

    我正在迁移在 OSGi Equinox 和 Pax web 上运行的现有 GWT 应用程序 以使用声明式服务而不是编程式服务跟踪器 我在 Equinox 中使用 Pax Web PAX WEB War 扩展器可以毫无问题地加载基于 WAR
  • 是否可以使用网络代理(例如 fiddler )将网址重定向到另一个网址

    我正在尝试解析另一个服务器中的 WSDL 文件 但该文件在整个文档中都有硬编码的 localhost 当我获取它时 显然程序抱怨 连接被拒绝 因为我的机器上没有运行任何东西 我的问题是 是否可以使用网络代理 例如 fiddler 将这些 l
  • 转到 JavaScript forEach 循环中的“下一个”迭代[重复]

    这个问题在这里已经有答案了 如何进入 JavaScript 的下一个迭代Array forEach loop 例如 var myArr 1 2 3 4 myArr forEach function elem if elem 3 Go to
  • 调整 Axes3D 标签位置

    我在 matplotlib 中的轴标签与刻度标签重叠时遇到问题 我尝试通过应用转换或调用 set y 来 手动 重新定位标签 但无济于事 这是重现该问题的片段 import matplotlib matplotlib use TKAGG i
  • 如何让C语言成为上下文无关的?

    我知道C不是上下文无关语言 一个著名的例子是 int foo typedef int foo foo x 在这种情况下 词法分析器不知道是否foo第三行是一个标识符 或者typedef 我的问题是 这是唯一的原因吗 C a 上下文相关语言
  • ReportViewer 2010 无法计算表达式

    我的项目是ASP Net WebForms 4 0框架 使用ReportViewer 10 使用Local处理模式渲染本地RDLC报表 我的问题是我的报告中的许多表达式都没有计算 例如 我在报告的页脚中有一个文本框 其中包含简单的表达式 G
  • 如何从列表理解中获取多个列表作为单独的结果?

    假设我有这样的代码 def f x return 2 x x x x range 3 xlist ylist f value for value in x 我怎样才能巧妙地得到这样的结果 xlist 0 2 4 ylist 0 1 4 注意
  • 如何使用 ant 将 jar 文件包含到 Ear 文件的 lib 文件夹中?

    我有以下文件夹结构 project ear lib folder ProjectEJBClient jar META INF folder projectEJB jar My build xml包含以下行来创建 EAR 包
  • 如何使用 Knockout 3.0 取消对可观察数组的更改?

    我的数组发生了变化 我正在使用 Sanderson 最新的数组订阅方法来捕获添加 删除更改 在此订阅中 我打算捆绑并通过网络发送我的请求 如果请求因任何原因失败 我希望能够取消对集合的任何可能的更改 我已经验证该订阅在更改传播之前就已生效