2011-10-26 48 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