如何从 keyDown 事件中调用 knockout.js 事件

How to call the knockout.js event from the keyDown event

我想从keyDown事件中执行knockoutjs绑定的事件

Html

<button id="copyButton" data-bind="click: clipboardModel.copy">copy</button>

jQuery

$('#someElement').on('keydown', function(e) {
    switch (e.keyCode) {
        case 67: // c
            if (!(e.ctrlKey || e.metaKey)) break;
            $('#copyButton').click();
            break;
    }
});

它适用于此,但似乎不是正确的方法。

你可以bind to the event directly:

<input id="someElement" data-bind="event: { keydown: clipboardModel.copyKeydown }" />

尽管这确实意味着您需要将 keyCode 支票放入淘汰函数中:

var clipboardModel = {
    copyKeydown: function(data, e) {
        switch (e.keyCode) {
            case 67: // c
                if (!(e.ctrlKey || e.metaKey)) break;
                clipboardModel.copy();
                break;
        }
    },
    copy: function() { /*...*/ }
}

我在这里对你的视图模型做了一些假设,你可能需要稍微调整一下。