6

我有一个问题如何调用 onchanges 敲 js 到我的选择选项,我已经有一个函数和 html,但是当我选择选择选项时,没有任何变化

<select data-bind="event:{change:setSelectedStation() },
                   options: seedData,
                   optionsText: 'text',
                   optionsValue: 'value'">
</select>

这是我的功能

setSelectedStation: function(element, KioskId){
     this.getPopUp().closeModal();
     $('.selected-station').html(element);
     $('[name="popstation_detail"]').val(element);
     $('[name="popstation_address"]').val(KioskId);

     $('[name="popstation_text"]').val(element);
     // console.log($('[name="popstation_text"]').val());
     this.isSelectedStationVisible(true);
},
4

1 回答 1

14

使用 knockout 的双向数据绑定,而不是手动订阅 UI 事件。

Knockout 的value数据绑定侦听 UI 更改并自动为您跟踪最新值。

您无需通过 jQuery 方法替换 HTML,而是使用text,attr和其他value绑定在您的选择更改时更新 UI。

如果您想在选择更改时执行额外的工作(例如关闭弹出窗口),您subscribe可以选择所选值。

var VM = function() {
  this.seedData = [
    { 
      text: "Item 1",
      data: "Some other stuff"
    },
    { 
      text: "Item 2",
      data: "Something else"
    },
    { 
      text: "Item 3",
      data: "Another thing"
    }
  ];
  
  this.selectedItem = ko.observable();
  
  this.selectedItem.subscribe(function(latest) {
    console.log("Input changed");
  }, this);
};

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

<select data-bind="
        value: selectedItem,
        options: seedData,
        optionsText: 'text'">
</select>

<!-- ko with: selectedItem -->
<p>
  Your selection: <span data-bind="text: data"></span>
</p>
<!-- /ko -->

于 2017-04-01T14:35:24.133 回答