【问题标题】:Update observable when input value changes当输入值改变时更新 observable
【发布时间】:2018-10-08 17:15:00
【问题描述】:

我有一个输入组,其中包含一个名为“小时”的字段,可以使用字段两侧的 -/+ 按钮或手动输入字段来更改此字段。

使用 -/+ 按钮时,值会正确更新,但当用户在输入框中手动输入值时,我无法更新它。

由于设置的原因,我无法使用订阅,因为当按钮更改值时也会触发订阅。有什么办法可以解决这个问题吗?

代码(函数 'subHours' 和 'addHours' 只是将 -/+ 1 添加到当前值):

<div class="input-group">\
    <span class="input-group-btn">\
          <button type="button" class="btn btn-default" data-bind="click: subHours">\
               <span class="glyphicon glyphicon-minus"></span>\
           </button>\
    </span><input type="text" class="form-control" data-bind="textInput: hours"/>\
    <span class="input-group-btn">\
           <button type="button" class="btn btn-default" data-bind="click: addHours">\
                <span class="glyphicon glyphicon-plus"></span>\
           </button>\
    </span>\
</div>\

我想以与单击按钮时类似的方式调用函数。

【问题讨论】:

  • 如果你只是显示当前的JS代码会更容易..
  • @Ray 当前的 JS 代码是什么?按下按钮时调用的函数?因为这是唯一与此相关的 JS 代码。还有一个名为“小时”的简单可观察对象

标签: javascript knockout.js


【解决方案1】:

ko.toJSON() 可以看出,它似乎正在正确更新。

var viewModel = function(){
  var self = this;
  this.hours = ko.observable(0);
  this.subHours = function(){
    self.hours(self.hours()-1);
  };
  this.addHours = function(){
    self.hours(self.hours()+1);
  };
};

ko.applyBindings(new viewModel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<div class="input-group">
    <span class="input-group-btn">
          <button type="button" class="btn btn-default" data-field="week.id" data-bind="click: subHours">Sub
               <span class="glyphicon glyphicon-minus"></span>
           </button>
    </span><input type="text" name="week.id" class="form-control" data-bind="textInput: hours"/>
    <span class="input-group-btn">
           <button type="button" class="btn btn-default" data-field="week.id" data-bind="click: addHours">Add
                <span class="glyphicon glyphicon-plus"></span>
           </button>
    </span>
</div>


<span data-bind="text: ko.toJSON(hours)"></span>

【讨论】:

猜你喜欢
  • 2017-10-22
  • 1970-01-01
  • 2015-05-03
  • 2021-09-27
  • 2014-10-14
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
  • 1970-01-01
相关资源
最近更新 更多