我有一个计算的 observable,它根据其他数据(在计算的 observable 中)进行 AJAX 调用。生成的数据用于填充 UI 的一部分。有时 UI 的那部分是隐藏的,我想在隐藏时避免 AJAX 调用。现在我有以下内容,但只要isVisible
变为true
:
this.loadData = ko.computed(function() {
if (this.isVisible()) {
this.isProcessing(true);
var self = this;
$.when.apply($, ko.utils.arrayMap(this.parent.data.filteredSelectedDatasetLinks(), function(datasetLink) {
return $.ajax({
url: datasetLink.getDownloadUrl('.json'),
success: function(data) {
//... do stuff with the data
}
});
}))
.done(function() {
self.isProcessing(false);
});
}
}, this);
所以很明显我需要以某种方式把它分开,但我还没有想出如何去做。重申一下,当isVisible
为假时,不应该发生更新。当isVisible
为真时,只要filteredSelectedDatasetLinks
发生变化就会发生更新。当isVisible
变为 true 时,如果filteredSelectedDatasetLinks
在它为 false 时发生更改,则会发生更新。