在尝试定义咖啡脚本功能时获取“保留字'功能'”

时间:2016-09-07 20:58:30

标签: function coffeescript focus

我有这个咖啡脚本

@open_login_dialog = () ->
  opt = {
    autoOpen: false,
    modal: true,
    width: 'auto',
    focus: function(e) ->
      $(this).dialog('option', 'width', $("#loginBox").width())
  }

Rails报告了一个神秘的错误,“SyntaxError:[stdin]:184:12:保留字'function'”。它没有告诉我一条线,但当我评论出“焦点:功能”部分时,一切都有效,这让我相信这是罪魁祸首。如何编写以上内容以便与咖啡脚本完美搭配?

1 个答案:

答案 0 :(得分:0)

根据@ muistooshort的评论,你需要使用coffeescript函数语法,用function(a,b,c)替换(a,b,c) ->

其次,您需要继续使用:在对象内进行分配。

我还建议在coffeescript上刷一点。这是关于该语言的favourite resource。 linter也有助于捕获这些基本的语法错误。

您的代码可以进一步清理:

@open_login_dialog = ->
  opt = 
    autoOpen: false
    modal: true
    width: 'auto'
    focus: -> 
      $(this).dialog 'option', 'width', $('#loginBox').width()

说明

  1. 如果您不想要任何参数,可以从功能定义中省略(),只需使用箭头->

  2. 您不需要{}括号来定义对象

  3. 在多行上定义对象时,不需要尾随逗号
  4. 您没有在焦点监听器中使用eventObject e,因此也可以省略。
  5. 在调用函数并传递参数时,括号是可选的。