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