动态设置Knockout下拉值

时间:2017-06-21 07:51:42

标签: javascript html knockout.js

我有一个下拉值,这在控制台中很难设置。我尝试使用Jquery .val并使用document.getEWlementById.value,两者都不会设置该项。有谁知道如何使用该值设置下拉列表的值?我认为问题在于它正在使用Knockout,这使得动态设置变得更加困难。

这是HTML:

<select id="sourceShippingLocations" data-bind="options: $root.ShippingLocations, optionsText:'Name', optionsCaption:'Select location', value: $root.SelectedOriginShippingLocation" class="form-control" title="">
    <option value="">Select location</option>
    <option value="">doo Warehouse</option>
    <option value="">moo</option>
    <option value="">Manchester</option>
</select>

1 个答案:

答案 0 :(得分:3)

淘汰赛并没有让它变得更加难以动态设置&#34;。它的工作方式不同。

在淘汰赛中,视图模型决定了视图中发生的事情。换句话说:您不是通过直接修改属性来设置选择的值,而是更改基础模型的选定值,并且knockout为您管理UI状态。

每个<option>元素表示名为$root.ShippingLocations的数组中的值。所选值存储在$root.SelectedOriginShippingLocation中。

在viewmodel中,您可以通过执行以下操作来更新当前选择:

 this.SelectedOriginShippingLocation(this.ShippingLocations()[0])

(这会将选择设置为第一个送货地点)

如果你想在不必修改viewmodel的情况下看到这个,你可以在你的控制台中破解它:

var root = ko.contextFor(document.getElementById("sourceShippingLocations")).$root;
root.SelectedOriginShippingLocation(ko.unwrap(root.ShippingLocations)[0]);

// change 0 for the index you like