淘汰:valueUpdate从javascript代码更改

时间:2012-11-29 18:47:20

标签: mvvm knockout.js

嗨我知道valueUpdate:afterkeydown将在用户输入后进行模型更新但我想知道如何在其他一些javascript代码更改值后自动执行valueUpdate

我有一个执行document.getElementById(“input”)的js代码.value =“new value”;

我必须手动更新模型或我应该使用什么valueUpdate。

2 个答案:

答案 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()。