繁体   English   中英

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

[英]Calling another function or method from within a click handler in CoffeeScript

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

我有基本的语法错误吗?

您快到了...从这里更改代码:

$('.js-size-unit-button').on 'click', (e) ->

对此:

$('.js-size-unit-button').on 'click', (e) =>

为什么这样做? “胖箭头”( => )告诉CoffeeScript编译器确保事件处理程序中this的值引用您定义的类,而不是其他内容。 通常,在Javascript中,如果在事件处理程序中使用thisthis指的是触发事件的元素。

Coffescript文档中标题为“绑定函数,生成器函数”的部分对此进行了描述。

您可能还需要从以下方法更改init方法的声明:

init: ->

至:

init: =>

以确保在定义事件处理程序时this的值可以引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM