我遇到了一个问题,即我的计算出的 observable 在一系列依赖项更改后停止触发。最后我发现了一点:如果在最近一次评估期间依赖关系在错误的分支语句中,那么即使在评估完成之前条件变为真,下次也不会触发计算。这是一个示例:https ://jsfiddle.net/sgs218w0/1/
var viewModel = new function(){
var self = this;
self.trigger = ko.observable(true);
self.fire = function(){
self.trigger(! self.trigger());
};
self.content = function(){
var test = 3;
return ko.computed(function(){
alert("triggered!");
if(test !== 0){
console.log(self.trigger());
alert(test);
}
test--;
});
}();
};
ko.applyBindings(viewModel);
是错误还是功能?您知道此问题的任何解决方法吗?我似乎在优化,但对我来说它看起来很激进且不正确。(编辑:我改变了主意。这是合理的,但有时会导致一些问题。我认为淘汰赛应该有解决这个问题的选项)
PS如果您需要,我可以发布更详细的真实代码示例以使问题更具体。但是真正的代码点是一样的。
更新 好吧,我必须不那么懒惰地提供更详细的示例来说明我想要实现的目标。我喜欢自动进行 ajax 调用的计算的想法。描述在这里。我看到的一个缺点是即使 UI 的相应部分不可见,也会进行调用。我试图以这种方式修复它:https ://jsfiddle.net/bpr88bp3/1/ 。问题是一旦选项卡被取消激活它就不能再被激活,因为计算停止触发......