我对数组进行了更改.我正在使用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");