gpt4 book ai didi

javascript - 以编程方式更新可观察值时 Knockoutjs 不更新 UI

转载 作者:行者123 更新时间:2023-11-28 03:09:12 24 4
gpt4 key购买 nike

当我以编程方式更新可观察对象并打开模式时,为什么下拉列表没有更新?这是全部代码 https://jsfiddle.net/krob636/jes9bvLw/119/

如果我尝试首先更改元素的值,则更改可观察值会更新下拉列表。单击“启动模式”按钮,然后单击“可观察”按钮。所选 ID 发生变化,但下拉列表不变。现在单击 Element 按钮,然后再次单击 Observable 按钮。下拉菜单确实发生了变化。

Javascript

this.selectedSimulators = ko.observableArray().extend({notify: 'always'});

this.simulators = ko.observableArray([
new Simulator(1, 1, 1, "CH-53E", "APT", "APT 2F190-2"),
new Simulator(2, 1, 1, "CH-53E", "EAET", "EAET 2H164-2"),
new Simulator(3, 1, 1, "CH-53E", "WST", "WST 2F174-2")
]);

this.openModal = function() {
$('#exampleModal').modal('show');
this.selectedSimulators(1);

// UI does not update without calling this
//$("#ddSims").val(1);
}

HTML

  <select class="form-control" id="ddSims" multiple="multiple" data-bind="options: simulators,
optionsText: 'typeAndSerialNumber',
optionsValue: 'id',
selectedOptions: selectedSimulators,
multiselect: {includeSelectAllOption: true}">
</select>

<button type="button" class="btn btn-primary" data-bind="event: {click: openModal}">
Launch modal
</button>

最佳答案

您正在混合 observables 和 observableArrays。 selectedSimulators 是一个数组,但您将其设置为值 1,而不是将值 1 推送到数组中。试试self.selectedSimulators.push(1);相反。

关于javascript - 以编程方式更新可观察值时 Knockoutjs 不更新 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60309477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com