2012-05-22 3 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 Удалено ... hehehehe – user1411274

Смежные вопросы