【问题标题】:CoffeeScript - Unmatched OUTDENTCoffeeScript - 无与伦比的 OUTDENT
【发布时间】:2013-04-25 21:45:55
【问题描述】:

我一直在尝试将我的工作 javascript 代码传递给 CoffeeScript,但我无法通过此错误:

第 55 行不匹配的 OUTDENT

这是咖啡脚本代码

$(document).on("click",".save_button", ->
    $form = $(this).parent().parent().parent().parent().parent().parent()
    $form.bind("ajax:complete", ->
                $actionURI = $form.attr("action");
        $.get(window.location.protocol+"//"+window.location.host+$actionURI+".js",(data) ->
                    $form.parent().parent().prev().html(data); //Line 55
                    closeSaveElement()
        ,"html")
    );
    $form.submit();   
    return false;
);

我已经尝试在任何地方放置和擦除;,但我没有什么问题。我还尝试将-> 更改为=>,但弹出相同的错误。

【问题讨论】:

  • coffeelint.org 是保持 CofeeScript 干净的有用工具
  • js2coffee.org 是我最喜欢的 Coffee / JS
  • @JasonSperske coffeelint 似乎有点过时了
  • $(this).parent().parent().parent().parent().parent().parent():哇。我认为你不知道closest。

标签: javascript ruby-on-rails coffeescript


【解决方案1】:

有效的 JS 并不是真正有效的 CoffeeScript。你必须这样做:

$(document).on "click", ".save_button", ->
    $form = $(this).parent().parent().parent().parent().parent().parent()

    $form.bind "ajax:complete", ->
        $actionURI = $form.attr "action"
        $.ajax
            type: "get"
            url: "#{window.location.protocol}//#{window.location.host}#{$actionURI}.js"
            dataType: "html"
            success: ->
                $form.parent().parent().prev().html(data)
                closeSaveElement()

    $form.submit()

    return false

另外,对这一行做点什么:

$form = $(this).parent().parent().parent().parent().parent().parent()

.closest() 应该会有所帮助。

【讨论】:

  • 嘿,谢谢,是的,我不喜欢整个 parent() 的东西,让我看看最接近的()。所以我所看到的,我应该删除所有痕迹;
  • 空白对于咖啡脚本也很重要。它表示函数的开始和结束、散列块等。所以你在哪里缩进$actionURI = $form.attr("action") - 这可能会导致问题(更不用说分号了)。
猜你喜欢
  • 2012-12-25
  • 2016-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-10
  • 2018-12-09
  • 1970-01-01
  • 2013-02-18
相关资源
最近更新 更多