Knockout js не обновляет интерфейс при программном обновлении наблюдаемой - PullRequest
1 голос
/ 20 февраля 2020

Почему раскрывающийся список не обновляется, когда я программно обновляю наблюдаемое и открываю модальное окно? Вот весь код https://jsfiddle.net/krob636/jes9bvLw/119/

Изменение наблюдаемого обновляет выпадающий список, если я сначала пытаюсь изменить значение элемента. Нажмите кнопку запуска модальной, затем нажмите кнопку наблюдаемой. Выбранный идентификатор изменяется, но не раскрывающийся список. Теперь нажмите кнопку «Элемент», затем снова нажмите кнопку «Наблюдаемая». Раскрывающийся список действительно меняется.

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>

1 Ответ

0 голосов
/ 20 февраля 2020

Вы смешиваете наблюдаемые и наблюдаемые массивы. selectedSimulators является массивом, но затем вы устанавливаете его в значение 1 вместо того, чтобы помещать значение 1 в массив. Попробуйте self.selectedSimulators.push(1); вместо.

...