【问题标题】:convert ruby + javascript code to coffeescript将 ruby​​ + javascript 代码转换为 coffeescript
【发布时间】:2014-11-22 09:31:23
【问题描述】:

我有以下代码:

    $(document).ready(function() {
    // Cycles the carousel to a particular frame
      <%  (0..6).each_with_index do |i, index| %>
        $(".slide<%= i%>").click(function(){
          $("#myCarousel").carousel(<%= i%>);
        });
      <% end %>
    });

我需要将其转换为咖啡脚本并将其移出外部文件。

1) 是否可以调用将这里的变量传递给外部文件? 2) 怎么做?


更新了代码以说明为什么我需要传递变量。

$(document).ready(function() {
  // Cycles the carousel to a particular frame
  <%  @images.each_with_index do |i, index| %>
    $(".slide<%= index%>").click(function(){
      $("#myCarousel").carousel(<%= index%>);
    });
  <% end %>
});

【问题讨论】:

  • 为什么要传递任何变量?你根本不需要任何 Ruby/ERB。
  • 已更新代码。

标签: javascript ruby-on-rails-4 coffeescript


【解决方案1】:

正如 所说,mu 太短了,您实际上不需要传递任何变量,您可以像这样直接将其转换为 Coffeescript:

$(document).ready ->
    for i in [0..6]
        $(".slide#{i}").click ->
            $("#myCarousel").carousel i

【讨论】:

  • 您可能希望使用do 循环来确保i 是您希望在点击处理程序中出现的内容。
【解决方案2】:

在我看来,Kyle Needham 的回答(大部分)是正确的。您可以在外部文件中执行此操作:

root = exports ? this

root.foo = {} #namespace

root.foo.createNCarousels = (n) ->
  for i in [0..(n - 1)]
    do (i) -> #If this is confusing, see http://rzrsharp.net/2011/06/27/what-does-coffeescripts-do-do.html
      $(".slide#{i}").click ->
        $("#myCarousel").carousel i

现在在您的原始文件中包含外部脚本标签,您应该可以这样调用它:

$(document).ready(function() {
  // Cycles the carousel to a particular frame
  document.foo.createNCarousels(<%=  @images.length %>);
});

请记住,我不了解 Ruby,因此 Ruby 语法可能是错误的,但我希望我的意图很明确。

【讨论】:

    猜你喜欢
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 2016-11-26
    相关资源
    最近更新 更多