对于使用Knockout.js订阅我面临循环依赖的下面代码是否有任何可能的修复。
this.observable1.subscribe(function(value){
self.observable2("someValue");
});
this.observable2.subscribe(function(value){
self.observable1("someValue");
});
其中“self”是“this”的别名,observable1链接到组合框,observable2链接到日期选择器。
请建议
答案 0 :(得分:1)
正如@Origineil所说,你可能需要重新思考你的解决方案。
但是如果你真的想保留当前的解决方案,你可以使用一个标志来打破循环。
var isInnerUpdate = false;
this.observable1.subscribe(function(value){
if (isInnerUpdate) {
isInnerUpdate = false;
} else {
isInnerUpdate = true;
self.observable2("someValue");
}
});
this.observable2.subscribe(function(value){
if (isInnerUpdate) {
isInnerUpdate = false;
} else {
isInnerUpdate = true;
self.observable1("someValue");
}
});
答案 1 :(得分:0)
我使用了如下的全局变量和逻辑,它对我来说很好,
var enableSubcribe = false; //global variable
this.observable1.subscribe(function(value){
enableSubcribe = true;
self.observable2("someValue");
enableSubcribe = false;
});
this.observable2.subscribe(function(value){
if(!enableSubcribe ){
self.observable1("someValue");
}
});
感谢Huocp,你的逻辑看起来也很有用。谢谢大家的意见和回答。