从CoffeeScript中的单击处理程序中调用另一个函数或方法

时间:2015-11-09 17:57:14

标签: javascript function coffeescript onclick

我是一个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不是函数

我是否有基本的语法错误?

1 个答案:

答案 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的值有引用的内容。