順序付けられたデータを処理していて、この問題が発生しました。
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'リスナーがありましたが、現在は使用していません。何か案は?