将Javascript onkeypress转换为knockoutjs以调用enter

我试图在KnockoutJS中做一切,但是我很难将其转换为knockoutjs。

我有一个输入框,在输入时我需要调用addInputName()。 这是我认为这样做的老派方式。 有没有办法在淘汰赛中完成所有这些?

  self.addInputName = function (inputElement, event) { if (event.keyCode == 13) { $('#addInputName').click(); } }; 

 // View   // ViewModel function ViewModel() { var self = this; self.name = ko.observable(); self.names = ko.observableArray(); self.addInputName = function () { self.names.push(self.name()); self.name(""); }; } // Custom Binding ko.bindingHandlers.enterKey = { init: function (element, valueAccessor, allBindings, data, context) { var wrapper = function (data, event) { if (event.keyCode === 13) { valueAccessor().call(this, data, event); } }; ko.applyBindingsToNode(element, { event: { keyup: wrapper } }, context); } }; 

Custom Bindings @ 20:05

查看自定义绑定 。 它是帮助您从ViewModel的业务逻辑中获取UI逻辑的宝贵工具。

为什么不将输入包装在表单中? 然后,您可以将HTML更改为

 

然后你的KO viewmodel看起来像

 var ViewModel = function() { var self = this; self.name = ko.observable(); self.addInputName = function() { // do stuff } }