在Coffeescript函数中有多行代码

4
我有以下Coffeescript代码:
$ ->
    $('#new_event').submit ->
        $.post(
            $(this).attr('action')
            $(this).serialize()
            (data, textStatus, jqXHR) ->
                $('#target').html(data)
        )
        return false

并且它被翻译成这样:

$(function() {
  return $('#new_event').submit(function() {
    $.post($(this).attr('action'), $(this).serialize(), function(data, textStatus, jqXHR) {
      return $('#target').html(data);
    });
    return false;
  });
});

到目前为止一切都很好。然而,我如何在提交中添加另一行?例如:
$ ->
    $('#new_event').submit ->
        test = $(this).serialize()
        $.post(
            $(this).attr('action')
            $(this).serialize()
            (data, textStatus, jqXHR) ->
                $('#target').html(data)
        )
        return false

这会导致意外的缩进错误。我不知道我在这里漏掉了什么...谢谢,Dany。
1个回答

5

很可能您在缩进时混合使用了空格和制表符。Coffeescript不喜欢这样做。

另外,您可以写@而不是this


错误在 test = ... 行。该行前面应该有什么?空格还是制表符? - codedog
它需要与下一行缩进相同的方式(该行应处于相同的级别)。大多数人会告诉您根本不要使用制表符以避免混淆。 - Thilo
你是对的- test...行之前有制表符,下一行则有空格。我正在使用Textmate并且依赖于它的缩进。也许我应该将其设置为始终使用空格? - codedog
是的,总是使用空格或至少设置制表符和空格可见,这样您就可以快速发现问题。 - Thilo
@Squeegy:哦,真的吗?我已经习惯了。你有链接吗? - Thilo
不是已弃用,只是不建议使用:https://twitter.com/#!/jashkenas/status/134461564165177345 - Alex Wayne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接