我在这里创建了一个简单的演示来演示这个问题:
http://jsfiddle.net/boblauer/eCugY/
基本上,我希望我的 userUpdated 函数在我更新用户属性时运行,但它只在页面加载时运行一次。
任何帮助表示赞赏。
我在这里创建了一个简单的演示来演示这个问题:
http://jsfiddle.net/boblauer/eCugY/
基本上,我希望我的 userUpdated 函数在我更新用户属性时运行,但它只在页面加载时运行一次。
任何帮助表示赞赏。
您的问题是您希望在userUpdated
更新用户时触发计算,因为您将用户设置为计算的上下文。
这些 KO 计算工作是如何进行的,它首先立即触发,并在触发过程中记录遇到的任何可观察对象。当这些 observables 之一被更新时,计算函数再次触发。在您的情况下,您的函数不会调用任何可观察对象。它只是调用警报。上下文对象不计入 observables 列表。
你可以通过在你的函数中使用用户 observable 来实现它。或者,您可能应该使用订阅,这是一个在可观察到的变化时调用的函数。将您的计算替换为
user.name.subscribe(function(newvalue) {
alert('user updated to ' + newvalue);
});
Computed 通常用于返回计算值。如果您开始将它们用作任意函数调用者,您最终可能会陷入无限循环(如果您决定更新计算中的 observable)。
希望这可以帮助。