他のデータに基づいて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
ますが、がfalseの場合、更新は発生しません。trueの場合、変更がisVisible
行われるたびに更新が行われfilteredSelectedDatasetLinks
ます。trueになると、falseのときに変更されたisVisible
場合に更新が行わfilteredSelectedDatasetLinks
れます。