将绑定分配给键(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
的值,你会看到数组只包含一个对象,key
和fn
的定义重复,所以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)的主要内容,如果未能解决你的问题,请参考以下文章