我的数组发生了变化。我正在使用 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(使用前将#替换为@)