繁体   English   中英

以编程方式更新可观察对象时,Knockoutjs 不更新 UI

[英]Knockoutjs not updating UI when programmatically updating an observable

当我以编程方式更新 observable 并打开模态时,为什么下拉列表没有更新? 这是所有代码https://jsfiddle.net/krob636/jes9bvLw/119/

如果我首先尝试更改元素的值,则更改可观察对象会更新下拉列表。 单击 Launch modal 按钮,然后单击 Observable 按钮。 选定的 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); 反而。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM