在按下“ Tab”键之前计算计算的变量-淘汰

时间:2018-08-01 02:56:39

标签: knockout.js knockout-3.0

Here是小提琴,它有两个输入字段。小提琴包含在span标签上,该标签是通过将两个输入连接在一起而得出的计算变量。

HTML

<div style="width : 200px; height : 80px; border: 1px solid red" data-bind="click : clicked">
  <input type="text" data-bind="value : input1, event : { keydown : function(){ return tabOut(event)}}" />
  <input type="text" data-bind="value : input2" />
  <span data-bind="text : result"></span>
</div>

JavaScript

function MyVM() {
  this.input1 = ko.observable('');
  this.input2 = ko.observable('');
  this.result = ko.computed(function() {
        console.log('Computed fired at ' + new Date());
    return this.input1() + ' ' + this.input2();

  }, this);

  this.clicked = function() {
  }

  this.tabOut = function() {
    if (event.keyCode == 9) {
        console.log('Tab fired at ' + new Date());
        this.clicked(event);
    };
    return true;
  }
}

var viewModel = new MyVM();
ko.applyBindings(viewModel);

如果您在该字段中输入内容并按“ Tab”键(无需单击任何位置),则首先触发keydown事件,然后计算出计算出的变量。

我希望在触发事件之前对计算出的变量进行计算。我怎么能达到同样的目的?

我看过docs中的valueUpdate绑定。我可以设置valueUpdate : afterKeydown来获得结果,但是我想将valueUpdate保留为其默认值。还有其他方法来获得预期的结果吗?

1 个答案:

答案 0 :(得分:0)

简单。使用override func isContentValid() -> Bool { // Do validation of contentText and/or NSExtensionContext attachments here return true } override func didSelectPost() { self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil) } override func viewDidAppear(_ animated: Bool) { self.view.transform = CGAffineTransform(translationX: 0, y: self.view.frame.size.height) UIView.animate(withDuration: 0.25, animations: { () -> Void in self.view.transform = .identity }) } 绑定而不是textInput绑定。

value

Here是更新过的小提琴。