1

Coffeescript 将 var 指令放置在错误的位置。我曾尝试在功能上放置大括号,但没有成功。这是咖啡脚本代码:

jQuery (->

  $(".item-scaffold-edit").live("click", (=>
    element = $(this)
    cont = element.data("cont")
    url = element.data("url")
    $.ajax(url,
      dataType: "html"
      success: (data, textStatus, jqXHR) ->
        $("##{cont}").html(data)
        $("##{cont}").data("url", url))))

  $(".item-menu").live("click", (=>
    element = $(this)
    cont = element.data("cont")
    url = element.data("url")
    if url isnt $("##{cont}").data("url")
      $.ajax(url,
        dataType: "html"
        success: (data, textStatus, jqXHR) ->
          $("##{cont}").html(data)
          $("##{cont}").data("url", url)
          $("#navbar-left li").removeClass("active")
          element.parent().addClass("active"))))
)

它生成:

(function () {
  jQuery((function () {
    var _this = this;
    $(".item-scaffold-edit").live("click", (function () {
      var cont, element, url;
      element = $(_this);
      cont = element.data("cont");
      url = element.data("url");
      return $.ajax(url, {
        dataType: "html",
        success: function (data, textStatus, jqXHR) {
          $("#" + cont).html(data);
          return $("#" + cont).data("url", url);
        }
      });
    }));
    return $(".item-menu").live("click", (function () {
      var cont, element, url;
      element = $(_this);
      cont = element.data("cont");
      url = element.data("url");
      if (url !== $("#" + cont).data("url")) {
        return $.ajax(url, {
          dataType: "html",
          success: function (data, textStatus, jqXHR) {
            $("#" + cont).html(data);
            $("#" + cont).data("url", url);
            $("#navbar-left li").removeClass("active");
            return element.parent().addClass("active");
          }
        });
      }
    }));
  }));
}).call(this);

但它应该生成这个:

(function () {
  jQuery((function () {    
    $(".item-scaffold-edit").live("click", (function () {
      var cont, element, url;
      var _this = this;
      element = $(_this);
      cont = element.data("cont");
      url = element.data("url");
      return $.ajax(url, {
        dataType: "html",
        success: function (data, textStatus, jqXHR) {
          $("#" + cont).html(data);
          return $("#" + cont).data("url", url);
        }
      });
    }));
    return $(".item-menu").live("click", (function () {
      var cont, element, url;
      var _this = this;
      element = $(_this);
      cont = element.data("cont");
      url = element.data("url");
      if (url !== $("#" + cont).data("url")) {
        return $.ajax(url, {
          dataType: "html",
          success: function (data, textStatus, jqXHR) {
            $("#" + cont).html(data);
            $("#" + cont).data("url", url);
            $("#navbar-left li").removeClass("active");
            return element.parent().addClass("active");
          }
        });
      }
    }));
  }));
}).call(this);

任何人都知道我的咖啡脚本代码有什么问题???

4

1 回答 1

1

据我从您的示例中可以看出,您目前拥有:

foo -> bar => element = $(this)

生成:

foo(function() {
  var _this = this;
  return bar(function() {
    var element;
    return element = $(_this);
  });
});

但您希望它生成:

foo(function() {
  return bar(function() {
    var _this = this;
    var element;
    return element = $(_this);
  });
});

那将与此相同:

foo(function() {
  return bar(function() {
    var element;
    return element = $(this);
  });
});

您可以使用以下方法生成:

foo -> bar -> element = $(this)

例如,将 更改=>->. “胖箭头”的文档在这里,解释了它与普通箭头的不同之处。

于 2012-05-22T22:15:31.987 回答