我在理解如何在coffeescript函数中编写回调函数时遇到一些麻烦。我创建了这个脚本和几个函数......
$('form').submit (e) ->
console.log $(this)
e.preventDefault()
if $(this).hasClass 'volunteer-check-out-find-me-form'
showFormLoader $(this), $(this).parent('aside.form').sibling('.form-loader'), ->
console.log 'finished'
showFormLoader = (form, formLoader, callback) ->
'showing loader and hiding form'
form.fadeOut ->
formLoader.addClass('show').one 'webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', ->
console.log 'calling back'
callback()
但是当我提交表单
时,我在控制台中收到此错误 Uncaught TypeError: undefined is not a function
在线上功能调用开启,我做错了什么?有更好的方法吗?
答案 0 :(得分:0)
Coffee脚本不允许按照Javascript的方式对函数进行前向引用,因此您需要将showFormLoader
移到submit
处理程序之上。这样,声明在引用之前。顺便说一下,IMO是Coffeescript的痛点。
所以这失败了:
baz(3)
baz = (n) ->
console.log n
错误:
TypeError: undefined is not a function
at Object.<anonymous> (untitled:51:3)
at Object.<anonymous> (untitled:57:4)
at Module._compile (module.js:456:26)
但当然这成功了:
baz = (n) ->
console.log n
baz(3)
我希望我能正确理解你的问题。