2012-05-22 74 views
1

Coffeescript將var指令放在錯誤的地方。我曾嘗試在功能上放置大括號,但沒有成功。這裏是CoffeeScript的代碼:Coffeescript變量聲明放置在錯誤的地方

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); 

任何人都知道這有什麼錯我的CoffeeScript碼????

回答

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) 

例如,改變=>->。 「胖箭頭」的文檔是here,它解釋了它與正常箭頭的不同之處。

+0

非常感謝!問題解決了。 – user1411274

+0

@ user1411274然後你可以刪除所有這些額外的大括號並且相信這個縮進:)(它傷害了看到那些關閉'))))'hehe) – epidemian

+0

@epidemian Removed ... hehehehe – user1411274