Заменить вычисленное значение ko.com

У меня есть этот код здесь

  orderTotal = ko.computed(function () {

        return parseFloat($("#PurchaseDomainSuffix option:selected").text().match(/[0-9]+(?:\.[0-9]*)?/g)) || 0;
    }

который берет числовое значение из строки при загрузке страницы. (загружается из раскрывающегося списка) Но когда список изменяется, я не могу понять, как обновить значение orderTotal.

Я новичок в нокауте. Я искал функцию записи для ko.computed. Не уверен, что смотрю в правильном направлении. Как мне перезаписать значение из загрузки страницы новым значением после изменения раскрывающегося списка.

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
0
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В Knockout есть классная поддержка выпадающих списков.

Вы можете использовать привязку options для создания списка и параметр значения, чтобы сделать правильный выбор. Вот небольшой пример.

function ViewModel() {
  var self = this;

  self.list = [{
      name: "Breakfast",
      time: 'Morning'
    },
    {
      name: "Lunch",
      time: 'Noon'
    },
    {
      name: "Dinner",
      time: 'Evening'
    }
  ];

  self.selectedItem = ko.observable();

  self.selectedComputed = ko.computed(function() {
    var selectedItem = self.selectedItem();
    return "I'll eat at " + selectedItem;

  });


}

ko.applyBindings(new ViewModel());
<script src = "https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>

<select data-bind = "options: list, value: selectedItem, optionsText: 'name', optionsValue: 'time'"></select>
<br>
<span data-bind = "text: selectedItem"></span>
<br>
<span data-bind = "text: selectedComputed"></span>

В этом есть большой смысл. Но значения в раскрывающемся списке заполняются путем извлечения базы данных перед загрузкой страницы. Которые время от времени меняются. Так что жесткое кодирование их в списке не вариант.

Corey Toolis 15.03.2018 19:34

Вы можете использовать observableArray для хранения списка. Я просто использовал это как пример.

John Pavek 15.03.2018 19:38

Закончил изменение вычисляемого на наблюдаемое и просто запустил .orderTotal (значение) для его обновления.

Corey Toolis 15.03.2018 20:36

Другие вопросы по теме