2011-07-05 15 views
7

私は作業しているbackbone.jsプロジェクトを持っています。これをセットアップして、行(backbone.jsモデル)をドラッグアンドドロップできるようにしました。 jQuery UI 更新イベント私のモデルは順序を変更してすべてがうまくいくようにすることができます。これを実現する新しい方法があれば、私は不思議に思っていました。私は以下のコードをいくつか含んでいます。jQuery UIのsortableとbackbone.js

$(".section").sortable({items: 'tr', update: function() 
{ 
    console.log("Event Fire!"); 
    secv.mySort(); 
}}); 

secvは、テーブルを保持するモデルのビューです。 mySort関数は、要素の順序を調べ、必要な更新を行います。

+0

このソリューションについてはどうしますか?私はそれがかなり多くのコードなしでかなりうまくいくと思う。これは、ソート可能性をバックボーンで実装した方法です。 – c3rin

+0

さらに複雑なもう一つのオプションはここにあります:http://stackoverflow.com/questions/10147969/saving-jquery-ui-sortables-order-to-backbone-js-collection – Cymen

答えて

1

私はあなたがおそらく初期化メソッドのビューでコレクションプロパティを設定していると仮定しています。同じ方法では、コレクションの 'change'イベントまたは 'refresh'イベントにビューメソッドをバインドする必要があります。このメソッドはソートされたコレクションを単に再描画します。必要に応じてコレクションをソートします。

理論的には、あなたのモデルは新しい位置で自身を更新する可能性があり、コレクションにコンパレータ機能がある場合、コレクションは自動的に自身を使用します。これが当てはまる場合、コレクションの 'refresh'イベントへのバインディングは、ビューのコレクション部分を再レンダリングするだけでよい上記のメソッドをトリガーします。

+0

また、あなたはコレクションの前に新しいコンパレータを割り当てることができますソート。 'collection.comparator(function(model){return model.get( 'some_property');}); collection.sort(); 'コレクション_reset_イベントを発生させ、レンダリングコレクションビューにバインドすることができます。 –

+3

これは元の質問にどのように答えますか?問題は、ビュー(DOM)がモデルコレクションの前に配置されていることです。 – kahoon

関連する問題