我是一个CoffeeScript n00b,我正在努力从我的点击处理程序中调用另一个函数。
出现第一个警报,但第二个没有。
CourseGuide =
init: ->
$('.js-size-unit-button').on 'click', (e) ->
alert 'hello world - test'
@clickHandler(e)
clickHandler: (e) ->
e.preventDefault()
console.log 'hello world - test 2'
alert 'hello world - test 2'
module.exports = CourseGuide
这是控制台中的错误:
TypeError:this.clickHandler不是函数
我是否有基本的语法错误?
答案 0 :(得分:2)
你几乎就在那里......改变这个代码:
$('.js-size-unit-button').on 'click', (e) ->
到此:
$('.js-size-unit-button').on 'click', (e) =>
为什么这样做? "胖箭" (=>
)告诉CoffeeScript编译器确保事件处理程序中this
的值引用您已定义的类,而不是其他内容。通常,在Javascript中,如果在事件处理程序中使用this
,则this
指的是触发事件的元素。
Coffescript文档中对in the section entitled "Bound Functions, Generator Functions"进行了描述。
您可能还需要更改init
方法的声明:
init: ->
为:
init: =>
确保在定义事件处理程序时this
的值有引用的内容。