2015-09-08 112 views
0

添加参数,命令我在动态做一个循环,并添加像这样增加几个菜单项:的Atom编辑:在菜单

{label: entry.getBaseName(), command: 'mymodule:openproj'} 

这工作,并调用先前定义的函数:

atom.commands.add 'atom-workspace', 
    'mymodule:openproj': (event) -> 
    console.log event 

但我需要做的是传递一个参数给函数,因为我希望我的命令根据点击哪个菜单项来做不同的事情。我想我会这样称呼它:

{label: entry.getBaseName(), command: 'mymodule:openproj('+entry.getBaseName()+')'} 

但是,这不会调用该函数。

回答

0

MenuManager::add输入定义了命令属性是一个字符串,那就是对的CommandName属性的引用在CommandRegistry::add这仅仅是一个名字而不是一个JavaScript表达式。

但是,附加到该命令的回调函数与DOM节点(菜单项)一起被调用为this引用。因此,如果您为多个菜单项使用单个commandName,则可以使用它来识别哪个菜单项被点击并相应地执行。

+0

你知道我如何访问我点击的菜单项吗?我将上面的代码更改为:'atom.commands.add'atom-workspace', 'mymodule:openproj':(event) - > console.log this'但它打印出整个atom-workspace节点,而不是只是菜单项。 –