嗨,我知道 valueUpdate:afterkeydown 将在用户输入后进行模型更新,但我想知道如何在其他一些 javascript 代码更改值后自动进行 valueUpdate
我有一个 js 代码执行 document.getElementById("input").value = "new value";
我必须手动更新模型还是应该使用什么 valueUpdate。
嗨,我知道 valueUpdate:afterkeydown 将在用户输入后进行模型更新,但我想知道如何在其他一些 javascript 代码更改值后自动进行 valueUpdate
我有一个 js 代码执行 document.getElementById("input").value = "new value";
我必须手动更新模型还是应该使用什么 valueUpdate。
如果您触发元素的change
事件,则元素的绑定 ( value
) 将获取更改并正常处理它。
但是,通常您希望通过视图模型进行更新并让绑定处理设置元素的属性,但是如果您有 3rd 方或现有代码直接与无法更改的元素交互,那么触发change
事件是解决方案。
Knockout 确实包含一个实用程序来触发一个名为ko.utils.triggerEvent
.
您的代码可能如下所示:
var elem = document.getElementById("input");
elem.value = "new value";
ko.utils.triggerEvent(elem, "change");
在更新输入值的行之后,调用 observable.valueHasMutated() 对与您正在更改的输入相对应的任何可观察对象。