2011-10-26 26 views
1

我试图在我的coffeescript代码中应用“刷新”触发器,但我没有找到正确的语法:jquery sortable refresh => coffeescript中正确的语法是什么?

在标准jQuery中,它会是:$('。milestone_chain')。sortable '刷新')

它会在CoffeeScript中是什么,知道这是我的代码:

$('.milestone_chain').sortable 
    axis: 'y' 
    containment: 'parent' 
    cursor: 'move' 
    tolerance: 'pointer' 
    update: (event,ui)-> 
     $('li > a > div > span.number').each (i, element) => 
      $(element).html i+1 
     $.ajax($(this).attr('data-update-url') + '/' + ui.item.attr('id') + '/reorder/' + (ui.item.index() + '.js')) 

的HTML如下:

<ul class="milestone_chain" data-update-url="projectmilestones"> 
     <% projectcapstone.projectmilestones.rank(:rank).includes(:projectdepartment).each.with_index do |projectmilestone, i| %> 


       <li class="milestone_<%=projectmilestone.projectdepartment.ranking%>" id="<%=projectmilestone.id%>"> 
       <div class="chainpie"><%= percent_pie(projectmilestone.status)%></div> 
       <div class="milestone<%=projectmilestone.projectdepartment.ranking%>"><%= link_to content_tag(:span, i+1, :class => "number"), projects_projectmilestone_path(projectmilestone) %></div> 
       <div class="milestonenum"> 
        <%= link_to projectmilestone.name, projects_projectmilestone_path(projectmilestone) %> 
        <b class="notch"></b> 
       </div> 
       </li> 


     <% end %> 
    </ul> 

它运作良好。问题在于代码有时需要在Ajax中加载,然后再无法使用。这就是我要实现刷新方法的原因。如果我理解正确,它解决了这个问题

谢谢!

+2

究竟是什么问题?当我将你的代码应用到咖啡编译器时,我得到了我期望的Javascript ......'sortable'下的所有东西都是一个包含指定选项的对象。什么不起作用? –

+0

我的问题是,在Ajax中加载html时,它不起作用。我更新了这篇文章,提供了关于代码的更多信息。 – ndemoreau

回答

0

答案是刷新不应该在上面的问题,但重装的代码阿贾克斯集团之后被触发,作为Ajax功能加载这个代码的一部分。

对于javascript pro应该是显而易见的,但对于像我这样的新手来说不是这样......谢谢

1

这是完全有效的CoffeeScript:

$('.milestone_chain').sortable('refresh') 

$('.milestone_chain').sortable 'refresh' 
+0

当我这样做的第一种方式,我得到错误信息“$(”。milestone_chain“)。sortable(”刷新“)不是一个函数”,当我这样做的第二种方式,什么也没有发生......谢谢! – ndemoreau

+0

你的代码还有其他问题。您是否混合了制表符和空格以进行缩进?这跑步在哪里? –

+0

它运行在内部网上,但我在上面的代码中发布了html代码。 – ndemoreau

-1

尝试devide你的代码,例如移动回调下跌了一小部分,并尝试之后发现错误。 在咖啡中,你不需要那么长的行ajax。尝试改进您的代码,使用字符串插值。你的代码看起来是这样的:

$.ajax "#{$(this).attr 'data-update-url'}/#{ui.item.attr 'id'}/reorder/#{ui.item.index()}.js" 
+0

事实上,只要我不在Ajax中加载我的列表,回调就可以正常工作。所以,我不明白如何将其推倒可以帮助。这个问题似乎存在于'刷新'声明中,但我只是收到一条错误消息,告诉我'刷新不是函数'。我对javascript/coffeescript很陌生,我不太清楚这个刷新语句应该如何工作。我很困惑... – ndemoreau

+0

点击它在萤火虫。你会看到你编译的JS代码(不是咖啡)中真正发生了什么。我认为你可能对'this'指针有问题。这可能不是你所期望的。 – ValeriiVasin