从javascript函数

时间:2018-03-01 16:06:12

标签: knockout.js

我正在使用带有输入绑定到Knockout视图模型的HTML表单。两个表格输入是纬度/经度坐标的双重类型:

<div class="form-group">
    <input class="form-control" name="Observation.LocationLatitude" data-bind="value: Observation.LocationLatitude" id="latitude" />
    <input class="form-control" name="Observation.LocationLongitude" data-bind="value: Observation.LocationLongitude" id="longitude" />
</div>

我从我的Google Maps javascript函数更新这些:

document.getElementById('latitude').value = markers[0].position.lat();
document.getElementById('longitude').value = markers[0].position.lng();

代码更新输入字段,但不会更新对viewmodel的绑定

更新viewmodel的唯一方法是直接输入到输入字段。在documentation之后,我尝试了&#34; textInput&#34;绑定,以及值输入绑定没有成功。我还尝试在Javascript中设置/更新输入字段的焦点。这也行不通。

有谁知道是否可以从Javascript更新绑定?

1 个答案:

答案 0 :(得分:1)

让淘汰赛为您做繁重的工作 - 您只需要担心更新模型,淘汰赛将更新视图。假设您的模型属性是可观察的:

Observation.LocationLatitude(markers[0].position.lat());
Observation.LocationLongitude(markers[0].position.lng());

通常,如果您使用knockout来管理DOM,您希望不要直接更新它(包括输入值,正如您在这里尝试的那样),因为至少淘汰赛不会意识到更新(如此处),或者更糟,它会导致冲突和错误。