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保留为其默认值。还有其他方法来获得预期的结果吗?
答案 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是更新过的小提琴。