javascript - KnockOutJS Show 在下拉选择更改时隐藏元素

标签 javascript html knockout.js

您好,我正在尝试在 Knockout 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

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

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

最佳答案

而不是 change 事件绑定(bind),你应该 subscribe directly在您的 selectedValue 可观察对象上,并从那里调用您的逻辑:

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>

演示 JSFiddle .

关于javascript - KnockOutJS Show 在下拉选择更改时隐藏元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37902248/

相关文章:

javascript - 我可以在 chrome 扩展中使用 puppeteer

javascript - 使用 Javascript 将 <span> 标签添加到 div

javascript - 根据搜索输入隐藏和显示 div

javascript - 获取 fadeIn 元素以引发问题

knockout.js - 对数据绑定(bind)文本使用 if 语句

javascript - 调整输入大小以适合其内容

javascript - PHP根据(按钮/链接)点击设置$_SESSION变量值

javascript - 如何更改 <select> 元素上的背景图像

javascript - Knockout JS 绑定(bind)计算可观察值不起作用

javascript - Knockout.js 多个外部模板和多个 VM 切换失败