为键分配绑定(keyMap)

时间:2015-07-29 12:01:52

标签: javascript extjs

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

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

但是我有一个特殊情况,我有一个下拉列表,我需要在下拉列表中为孩子们绑定密钥

1 个答案:

答案 0 :(得分:1)

那是因为你错过了右括号。你应该使用更好的格式和LINTing,这很容易发现。

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;