Knockout.js 如何创建观察映射对象的可观察属性?

Knockout.js 如何创建观察映射对象的可观察属性?,knockout.js,knockout-mapping-plugin,Knockout.js,Knockout Mapping Plugin,我在这里创建了一个简单的演示,演示了这个问题: 基本上,我希望在更新用户属性时运行userUpdated函数,但在页面加载时它只运行一次 非常感谢您的帮助。您的问题是,您希望在更新用户时触发userUpdatedcomputed,因为您将用户设置为computed的上下文 KO计算的功是怎样的,它首先会立即发射,在发射过程中会记录遇到的任何可见光。当其中一个观测值被更新时,计算函数再次触发。在您的情况下,您的函数不调用任何可观察对象。它只是调用警报。上下文对象不计入可观察对象列表中 您可以通过

我在这里创建了一个简单的演示,演示了这个问题:

基本上,我希望在更新用户属性时运行userUpdated函数,但在页面加载时它只运行一次


非常感谢您的帮助。

您的问题是,您希望在更新用户时触发
userUpdated
computed,因为您将用户设置为computed的上下文

KO计算的功是怎样的,它首先会立即发射,在发射过程中会记录遇到的任何可见光。当其中一个观测值被更新时,计算函数再次触发。在您的情况下,您的函数不调用任何可观察对象。它只是调用警报。上下文对象不计入可观察对象列表中

您可以通过在函数中使用可观察的用户来实现这一点。另外,您可能应该使用subscribe,这是一个函数,当可观察到的内容发生变化时,会调用它。将计算结果替换为

user.name.subscribe(function(newvalue) {
    alert('user updated to ' + newvalue);
});
计算值通常用于返回计算值。如果您开始将它们用作任意函数调用方,那么最终可能会进入无限循环(如果您决定更新计算对象中的可观察对象)


希望这有帮助。

您的问题是,您希望在更新用户时触发
userUpdated
computed,因为您将用户设置为computed的上下文

KO计算的功是怎样的,它首先会立即发射,在发射过程中会记录遇到的任何可见光。当其中一个观测值被更新时,计算函数再次触发。在您的情况下,您的函数不调用任何可观察对象。它只是调用警报。上下文对象不计入可观察对象列表中

您可以通过在函数中使用可观察的用户来实现这一点。另外,您可能应该使用subscribe,这是一个函数,当可观察到的内容发生变化时,会调用它。将计算结果替换为

user.name.subscribe(function(newvalue) {
    alert('user updated to ' + newvalue);
});
计算值通常用于返回计算值。如果您开始将它们用作任意函数调用方,那么最终可能会进入无限循环(如果您决定更新计算对象中的可观察对象)


希望这能有所帮助。

太棒了,使用Compute执行逻辑确实让我感觉不舒服,但我不知道还有其他方法。非常感谢!太棒了,使用Compute来执行逻辑确实让我感觉脏兮兮的,但我不知道还有其他方法。非常感谢!