gpt4 book ai didi

knockout.js - 我如何取消对使用 Knockout 3.0 的可观察数组的更改?

转载 作者:行者123 更新时间:2023-12-04 12:08:48 31 4
gpt4 key购买 nike

我的数组发生了变化。我正在使用 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 对象,但似乎没有什么可以等同于 STOP DON'T DO IT。

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

最佳答案

目前没有办法阻止更改的进行。

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

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

关于knockout.js - 我如何取消对使用 Knockout 3.0 的可观察数组的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20691374/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com