如何查找导致ko.computable触发的发送方或源

时间:2014-11-28 12:23:47

标签: javascript knockout.js typescript

我正在使用Typescript和KnockoutJs。我试图让发送者获得淘汰计算功能。基本上我有两个控件,如果控件的值中的任何一个被更改,那么将调用我的knockout可计算,

self.userValue = ko.computed(() => { 
if(self.control1.value())
{

}

if(self.control2.value())
{

}
});

无论何时控件的值发生变化,它都能正常工作。但我需要知道由于哪个控件(在两个中)值的变化,使得可计算的被调用。我已经检查了ko.computable等属性的任何发件人,但没有用。请指导我。

1 个答案:

答案 0 :(得分:0)

您可以使用订阅并使用共享代码调用函数:

function update(sender, newVal) {
     // some shared logic
}


self.control1.value.subscribe((newVal) => {
   // you can add here some specific logic for control1
   update(self.control1, newVal); // may be pass some additional params
});

self.control2.value.subscribe((newVal) => {
   // you can add here some specific logic for control2
   update(self.control2, newVal); // may be pass some additional params
});