我通过循环动态添加多个菜单项并添加如下:
{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 :(得分:0)
MenuManager::add的输入定义命令属性是一个字符串,这是对CommandRegistry::add中 commandName 属性的引用,只是一个名称而不是JavaScript表达式。
但是,使用DOM节点(菜单项)作为this
引用调用附加到命令的回调函数。因此,如果您对多个菜单项使用单个 commandName ,则可以使用它来识别单击了哪个菜单项并采取相应措施。