[这似乎是不可能的。这个问题我以后会自己回答]
这个问题在很大程度上延续了我之前的问题。我使用“异步计算”方法来刷新页面的某些部分。感谢 Michael Best,我解决了 UI 不可见部分的更新问题。但是还有一件烦人的事情。如何将初始(默认)值设置为计算的 observable?我尽量避免在页面加载期间多次调用 ajax。而不是它,我将 json 嵌入到页面中以一次加载所有内容。看起来微不足道(常见)?但我不能抑制对我的异步计算的第一次评估。所以无论如何都会进行ajax调用。我可以使用这种方法:
var isFirstEval = ko.observable(true);
updateComputed = ko.pureComputed(function () {
updateTrigger();
if(isFirstEval()){
isFirstEval(false);
result(initialValue);
}
else
result(evaluator.call(owner));
});
但我面临同样的问题,就像在上一个问题中一样:这个计算永远不会订阅evaluator更改,因为方法淘汰赛用于重新评估计算的 observables。来自类似问题的建议有效,因为它会检查之后 var value = self.product() * self.quantity();的第一次评估。所以计算总是跟踪product和quantity。我不能使用这种方法,因为我不能evaluator仅仅为了关心依赖而打电话,因为evaluator可以进行 ajax 调用......
是否存在任何方法来抑制计算(或纯计算)的第一次评估?或者也许是设置初始值的方法? 有什么建议么?其他解决方法?