微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

knockout.js – 如何取消对具有Knockout 3.0的可观察数组的更改?

我对数组进行了更改.我正在使用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’时,我确实看到ko.subscription对象具有标准[callback,dispose,disposeCallback,target]但似乎没有任何东西等于停止做不到.

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

解决方法

目前没有办法阻止变革通过.

您可以订阅beforeChange事件并在更改之前缓存阵列的副本.就像是:

self.sourceData.subscribe(function(value) {
    /store copy,in case it needs to be restored
    self.beforeSourceData = value && value.slice();
},"beforeChange");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据复制操作的两种方式。‌在聊深浅拷贝之前咱得了解一下js中的两种数据类型:
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:重建二叉树、反向输出链表每个节点 题目 重建二叉树: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列 {1,2,4,7,3,5,6,8} 和中序遍历序列 {
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须了解的知识点,现在迎来了ES6+的时代,因为箭头函数的出现,所以感觉有必要对 this 问题梳理一下,所以刚好总结一下JavaScript中this指向的问题。
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高