我有一个下拉值,这在控制台中很难设置。我尝试使用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>
答案 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