svelte - 如何将键盘导航添加到苗条的应用程序(窗口对象除外)?
问题描述
我想将键盘导航添加到我的苗条应用程序中。我知道可以使用 svelte 的窗口对象,例如<svelte:window on:keydown={handleKeydown}/>
. 然而生成的代码并不是很好,因为它将窗口对象的使用分散到整个应用程序中。
理想情况下,我想使用类似于 vue 的语法来编写<input v-on:keyup.page-down="onPageDown">
.
在 svelte 中也可能出现类似的情况吗?我错过了任何苗条的附加组件吗?
解决方案
您可以将事件侦听器附加到输入元素:
<input on:keyup={handleKeyUp}/>
<script>
function handleKeyUp(event) {
// ..
}
</script>
如果您想要与问题中的语法相同的语法,则可以使用如下操作:
<input use:keyup={{PageDown: onPageDown}}/>
<script>
import { keyup } from './keyup.js';
function onPageDown() { ... }
</script>
export function keyup(node, map) {
const listener = (e) => { if (map[e.key]) map[e.key](e); }
node.addEventListener("keyup", listener);
return {
destroy() { node.removeEventListener("keyup", listener); }
}
}
推荐阅读
- c - 我们可以通过函数改变 NULL 指针吗?
- c# - Java 到 C#:从文档哈希计算代码
- java - Elasticsearch - 术语聚合嵌套字段
- python - git repos 的 pip 20 依赖项
- javascript - Kotlin to JS Iterator 不是函数
- pygame - 尝试用 PYGAME 在一个代码中编写两个游戏
- postgresql - 如何使用 slick 使用 select 语句?
- java - Firebase 应用未在 Google Cloud 上初始化
- sql - 我如何根据sql oracle中的后续字母列出表中的名称
- android - Android Studio 测试中的颜色含义