根据“事件”绑定的Knockout文档:
默认情况下,Knockout将阻止事件执行任何默认操作。
....
但是,如果您 * 确实 * 想让默认操作继续执行,只需从事件处理函数返回true。
这似乎对我不起作用。我的观点是:
<input data-bind="event: { 'keydown': function(d, e) { onInputKeydown(e); } }" />
和我的ViewModel中的事件处理程序:
onInputKeydown = function(e) {
console.log(e.which);
return true;
}
这个处理程序阻止任何字符输入到<input>
元素中。我做错了什么?
3条答案
按热度按时间rqcrx0a61#
ViewModel中的函数确实返回了true,但是您在视图中指定的 Package 器没有传播该函数的返回值。尝试以下操作(注意添加了
return
):gmxoilav2#
我认为问题出在您如何绑定函数。请尝试以下操作:
Knockout会将参数数据和事件传递给您的函数。
rks48beu3#
是的,你需要从你的函数中返回true。我还发现,如果我在函数中遇到断点,keydown事件似乎忽略了我已经返回了true。禁用所有断点,它就能正常工作。