順序付けられたデータを処理していて、この問題が発生しました。
push()を使用してアイテムを場所に追加し、作成日に優先度をミリ秒単位で設定して、日付順に並べ替えます。次のアイテム、または前のアイテム(次がない場合)のアイテムの順序を変更して優先順位を取得しようとすると、1つを追加または減算して、移動したアイテムの優先順位を結果に設定します。優先度を取得しましたが、setPriority()を呼び出すと、アイテムの優先度が失われます。グラフィカルデバッガーを使用してアイテムをエクスポートすると、移動された各アイテムの優先度は返されません。移動されていないアイテムの正しい優先度を返します。
いくつかのコード:
/ * idは、移動されるdivのIDです。 jqueryuiのソート可能なものを使用する div idは、「item_」+ firebaseref.name()のように形成されます * / name = id.substr(id.indexOf('_')+ 1); id2 = $('#' + id).next()。attr('id'); if(id2){ name2 = id2.substr(id2.indexOf('_')+ 1); itemRef = rootRef.child('path / to / my / items /'+ name2); itemRef.once('value'、function(dataSnapshot){ var pr = Number(dataSnapshot.getPriority())、 myRef = rootRef.child('path / to / my / items /'+ name); myRef.setPriority(pr-1); //これまたはtoStringを以下のように試しました }); } そうしないと { //前のアイテムを試す id2 = $('#' + id).prev()。attr('id'); if(id2){ name2 = id2.substr(id2.indexOf('_')+ 1); itemRef = rootRef.child('path / to / my / items /'+ name2); itemRef.once('value'、function(dataSnapshot){ var pr = Number(dataSnapshot.getPriority())+ 1、 myRef = rootRef.child('path / to / my / items /'+ name); myRef.setPriority(pr.toString()); }); } }
'child_moved'リスナーがありましたが、現在は使用していません。何か案は?