我有一个案例,两个可观察对象相互依赖,导致无限循环。
this.value = ko.observable();
this.selectedOptions = ko.observableArray();
this.value.subscribe(function(value){
this.selectedOptions(value.split(', '));
});
this.selectedOptions.subscribe(function(options){
this.value(options.join(', '));
});
如何防止无限循环并更新两个观察点?
答案 0 :(得分:1)
打破循环。
this.value = ko.observable();
this.selectedOptions = ko.observableArray();
var isInnerUpdate = false;
this.value.subscribe(function(value){
if (!isInnerUpdate) {
isInnerUpdate = true;
this.selectedOptions(value.split(', '));
isInnerUpdate = false;
}
}, this); // I think you missed 'this' ref binding
this.selectedOptions.subscribe(function(options){
if (!isInnerUpdate) {
isInnerUpdate = true;
this.value(options.join(', '));
isInnerUpdate = false;
}
}, this);