gpt4 book ai didi

javascript - 使用 Knockout 将任何键(通过键码)绑定(bind)到操作

转载 作者:行者123 更新时间:2023-11-29 19:56:20 24 4
gpt4 key购买 nike

我正在寻找一种方法来将许多不同的键绑定(bind)到我的 View 模型中的不同操作/功能。

我找到了这个 example其中绑定(bind)处理程序用于将操作绑定(bind)到回车键。

但是我如何修改这个处理程序来支持提供的键码呢?我希望能够对所有类型的键使用相同的处理程序,最好还与修饰键结合使用。

ko.bindingHandlers.executeOnEnter = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var allBindings = allBindingsAccessor();
$(element).keypress(function (event) {
var keyCode = (event.which ? event.which : event.keyCode);
if (keyCode === 13) {
allBindings.executeOnEnter.call(viewModel);
return false;
}
return true;
});
}
};

最佳答案

你可以这样做:

ko.bindingHandlers.actionKey = {
init: function(element, valueAccessor, allBindings, data) {
var handler = function(data, event) {
var keys = ko.utils.unwrapObservable(allBindings().keys) || [13]; //default to Enter Key
if (!Array.isArray(keys))
keys = [keys];
if (keys.indexOf(event.keyCode) > -1) {
valueAccessor().call(data, data, event);
};
};
var newValueAccessor = function() {
return { keyup: handler };
};
ko.bindingHandlers.event.init(element, newValueAccessor, allBindings, data);
}
};

你可以像这样使用这个绑定(bind):

Observable Keys: <input data-bind="actionKey: action, keys: keyCodes" /><br/>
Inline Keys: <input data-bind="actionKey: action, keys: [33, 34]" /><br/>
Inline Key: <input data-bind="actionKey: action, keys: 33" /><br/>
Default Keys: <input data-bind="actionKey: action" /><br/>

这里是 a fiddle演示此绑定(bind)。

关于javascript - 使用 Knockout 将任何键(通过键码)绑定(bind)到操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15977496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com