简体   繁体   English

KnockOutJS 在下拉选择更改时显示隐藏元素

[英]KnockOutJS Show Hide elements on dropdown selection change

Hi I am trying to get selected value of dropdown in Knockout js so that I can hide/ show other elements based on selection.嗨,我正在尝试在 Knockout js 中获取下拉列表的选定值,以便我可以根据选择隐藏/显示其他元素。 Below is what I have tried.以下是我尝试过的。 What is happening that I am able to get right value on button click but not on dropdown selection change.发生了什么我能够在按钮单击时获得正确的值,但在下拉选择更改时无法获得正确的值。

Below is my code.下面是我的代码。 The button gives right value, but dropdown selection change event gives previous value & not the selected one.该按钮给出了正确的值,但下拉选择更改事件给出了先前的值而不是选定的值。

JS JS

   function ViewModel() {
     var self = this;
     self.optionValues= ko.observableArray(["Test1", "Test2", "Test3"]);
     self.selectedValue = ko.observable();

     self.save = function() {
        alert(self.selectedValue());            
    }
   }

  ko.applyBindings(new ViewModel());

HTML HTML

<select data-bind="event:{ change: save},options: optionValues, value: selectedValue"></select>

 <button data-bind="click: save">Save</button>

Instead of the change event binding binding, you should subscribe directly on your selectedValue observable, and call your logic from there:您应该直接subscribe selectedValue observable,而不是change事件绑定绑定,并从那里调用您的逻辑:

function ViewModel() {
  var self = this;
  self.optionValues = ko.observableArray(["Test1", "Test2", "Test3"]);
  self.selectedValue = ko.observable();
  self.selectedValue.subscribe(function(newValue) {
    self.save();
  });
  self.save = function() {
    alert(self.selectedValue());
  }
}
ko.applyBindings(new ViewModel());

Html:网址:

<select data-bind="options: optionValues, value: selectedValue"></select>

<button data-bind="click: save">Save</button>

Demo JSFiddle .演示JSFiddle

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

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