【问题标题】:How to assign hotkeys to trigger event in Slate如何分配热键以触发 Slate 中的事件
【发布时间】:2025-12-09 13:50:01
【问题描述】:

有没有办法在键盘上按下一个键时安排一个事件。我似乎在事件触发器中找不到。

【问题讨论】:

    标签: palantir-foundry foundry-slate


    【解决方案1】:

    对此有两种可能的答案。

    第一个是 slate 只是 javascript,带有沙盒层(用于安全性和功能性),因此在某种程度上,如果您知道 dom 元素 ID 可以尝试使用类似于以下内容的方式访问它:https://developer.mozilla.org/en-US/docs/Web/API/Document/keypress_event#examples

    const log = document.getElementById('log');
    
    document.addEventListener('keypress', logKey);
    
    function logKey(e) {
      log.textContent += ` ${e.code}`;
    }
    

    由于沙盒层,这可能无法实现,具体取决于您要实现的目标。如果您想在本地执行此操作,那么使用 slate 有效设计应用程序的诀窍是认为,每当变量更改时,整个世界都会被重新计算。与 Angular.js 上的生命周期刷新类似

    在 slate 中没有针对按键的本地全局事件,因此,如果您想侦听任何对文档冒泡的按键,那将无法正常工作。但是对于大多数用例,您可以解决它。例如,通过从输入设置变量,然后从其他地方读取它。

    1 - 转到变量选项卡并创建一个新变量。

    2 - 创建一个输入框。

    3 - 将变量设置为在每次变量更改时更新。

    4 - 从某个小部件或函数中读取变量。

    【讨论】: