我正在使用Coffeescript为Atom编辑器编写一个包。
我的示例代码:
module.exports =
class DeclarationTree
createIndexModules: (files, length) =>
@modules = new Map()
...
onClic = (text) =>
# PROBLEM **@modules** IS UNDEFINED
file_array = @modules.get(text)
console.log file_array
console.log file_array[0], file_array[1]
getProvider: ->
providerName: 'hyperclick-provider',
# getSuggestionForWord gives me a promise
getSuggestionForWord: (editor, text, range) ->
range: range, callback: ->
onClic(text)

当然,在调用onClic()之前定义了@modules。
我不知道如何解决它,我是Javascript的新手。
onClic
= ()
看似@module
定义了一种非类别方法,无法访问this.module
(module.exports =
class DeclarationTree
createIndexModules: (files, length) =>
@modules = new Map()
console.log this.constructor.name # DeclarationTree
...
onClic: (text) =>
# PROBLEM **@modules** IS UNDEFINED
file_array = @modules.get(text)
console.log file_array
console.log file_array[0], file_array[1]
getProvider: ->
providerName: 'hyperclick-provider',
# getSuggestionForWord gives me a promise
getSuggestionForWord: (editor, text, range) ->
range: range, callback: ->
console.log this.constructor.name # Object
@onClic(text)
)
如何访问我在课程中创建的变量' promise中回调函数内的方法?
谢谢!
编辑:使用冒号:感谢-1;)
Uncaught TypeError: this.onClic is not a function

收到this
错误。
显然,我无法访问callback
函数中与module.exports.listen = function listen(server, options) {
对象相关的任何内容。
答案 0 :(得分:0)
这可能就像在onClic
之后使用冒号而不是等号一样简单。这是你的意思吗?
现在coffeescript只是在该类声明范围内编写函数表达式,这就是为什么它无法访问@
/ this
。
编辑
您正在尝试使用this
脱离上下文。您需要将函数绑定到要引用的范围。在coffeescript中,您可以使用胖箭头功能轻松完成此操作。