2015-09-08 162 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節點,而不是隻是菜單項。 –