将绑定分配给键(keyMap)

Posted

技术标签:

【中文标题】将绑定分配给键(keyMap)【英文标题】:Assign binding to keys (keyMap) 【发布时间】:2015-07-29 12:01:52 【问题描述】:

我正在尝试将键绑定到某些组件。 我的问题是它只有最后一个组件将绑定一个键。 例如:

switch(element.id) 
        case "menu-1193":
            this.keyNav = new Ext.util.KeyMap(
                target: element.id,
                binding: [
                     key: "l", 
                     shift: true,
                     fn: function() 
                     alert("It works");                                          
                ,                                   
                key: "t",
                fn: function() 
                    alert("yet again");
                
            ]
        );         
        break;

上面的键绑定只适用于最后一个键绑定,也就是这里的键“t”。键“l”不起作用或被绑定。

因此,如果我再添加一个键绑定,则键 t 将不再起作用,但新绑定的键将起作用。比如

switch(element.id) 
        case "menu-1193":
            this.keyNav = new Ext.util.KeyMap(
                target: element.id,
                binding: [
                     key: "l", 
                     shift: true,
                     fn: function() 
                     alert("It works");                                          
                ,                                   
                key: "t",
                fn: function() 
                    alert("yet again");
                ,
                key: "i",
                fn: function() 
                    alert("yet again");
                
            ]
        );         
        break;

        case: "menu-1194"
        ...

这里键“i”被绑定并且可以工作,但是键“t”不再起作用。我该怎么做呢?我从这里的答案中得到灵感:how to create shortcut keys in extjs

但我有一个特殊情况,我有一个下拉菜单,我需要将键绑定到下拉菜单中的子项

【问题讨论】:

一个javascript对象不能有多个同名的属性。 @Haketo 你能解释一下这是什么意思吗?我对编程很陌生,所以我不完全理解它的含义以及如何解决它 如果你正确格式化binding的值,你会看到数组只包含一个对象,keyfn的定义重复,所以Javascript只会使用最新的创建对象。 【参考方案1】:

那是因为您缺少右括号。您应该使用更好的格式和 LINT,这很容易发现。

switch (element.id) 
  case "menu-1193":
    this.keyNav = new Ext.util.KeyMap(
      target: element.id,
      binding: [
        key: "l",
        shift: true,
        fn: function() 
          alert("It works");
        
       /* <-- THIS WAS MISSING */ ,  /* <-- AND THIS */
        key: "t",
        fn: function() 
          alert("yet again");
        
      ]
    );
    break;

【讨论】:

以上是关于将绑定分配给键(keyMap)的主要内容,如果未能解决你的问题,请参考以下文章

将 KeyMaps 添加到视口的最佳实践

是否有Eclipse的IntelliJ Keymapping插件?

Sublime Keymap 设置

将地图复制到另一个新地图

vim keymap

markdown macOS_windows_keyMap