2011-10-26 23 views
1

私は私のCoffeeScriptのコード内の「リフレッシュ」トリガーを適用しようとしているが、私は正しい構文が見つかりません:標準のjQueryでjquery sortable refresh => coffeescriptの正しい構文は何ですか?

を、それは次のようになります。$(」。milestone_chain')ソート可能( ) 'リフレッシュ'

何それは、これは私のコードであることを知って、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

私の問題は、htmlがAjaxで読み込まれても動作しないということです。私はそのコードに関する更なる情報を与えるために投稿を更新しました。 – ndemoreau

答えて

0

私のような初心者のためのjavascriptプロのために明白でなければならない...ありがとう

1

これは完全に有効なのCoffeeScriptです:

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

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

最初の方法では、エラーメッセージ "$(" milestone_chain ")が返されます。sortable(" refresh ")は関数ではありません。どうも! – ndemoreau

+0

あなたのコードに間違っていることがあります。インデント用にタブとスペースを混在させましたか?これはどこで実行されていますか? –

+0

これはイントラネット上で動作していますが、上記のコードにhtmlコードを掲載しました。 – ndemoreau

-1

は、例えば、より小さな部品のためのあなたのコードをdevideしてみているようにダウンコールバックし、その後エラーを見つけようと動きます。 コーヒーでは、あまりにも長いラインを必要としません。文字列の補間を使用してコードを改善してください。あなたのコードの意志が、このようなもののようになります。

答えは更新がAjaxの機能を搭載。このコードの一部として、上記の質問ではなく、コードのAjaxのブロックを再ロードした後にトリガされることになっていなかったということでした
$.ajax "#{$(this).attr 'data-update-url'}/#{ui.item.attr 'id'}/reorder/#{ui.item.index()}.js" 
+0

実際、Ajaxでリストをロードしない限り、コールバックは正常に動作します。だから、それをどのように動かすことが助けになるのかわかりません。問題は 'refresh'ステートメントにあるようですが、 'refresh is a function'というエラーメッセージが表示されます。私はjavascript/coffeescriptにはとても新しいので、このリフレッシュ・ステートメントがどのように機能すべきかよく分かりません。私は混乱しています... – ndemoreau

+0

火かき棒でそれをクリックしてください。コンパイルされたJSコード(コーヒーではない)で実際に何が起こるかを見ていきます。私はあなたが 'this'ポインタに問題があるかもしれないと思う。あなたが期待している通りではないかもしれません。 – ValeriiVasin

関連する問題