0

我正在处理有序数据并遇到了这个问题:

我使用 push() 将项目添加到一个位置,并将它们的优先级设置为以毫秒为单位的创建日期,因此它们按日期排序。当我尝试更改项目的顺序时,我找到下一个或上一个(如果没有下一个)项目并获得它的优先级,然后我添加或减去一个并将移动项目的优先级设置为结果。我获取了优先级,但是当我调用 setPriority() 时,该项目失去了优先级。使用图形调试器导出项目不会为每个移动的项目返回优先级。为未移动的项目返回正确的优先级。

一些代码:

/* id 是被移动的 div 的 id
使用 jquery ui 的可排序
div id 的组成类似于 "item_" + firebaseref.name()
*/
名称 = id.substr(id.indexOf('_') + 1);
id2 = $('#' + id).next().attr('id');
如果(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); // 尝试 this 或 toString 如下
    });
} 别的 {
// 尝试上一项
    id2 = $('#' + id).prev().attr('id');
    如果(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”监听器,但我现在没有使用它。有任何想法吗?

4

1 回答 1

0

这是 Firebase 中的一个错误。目前我不确定原因,但似乎大于一定大小的数字没有被正确保存。完成后,我们将调查并更新此答案。

更新:此错误已解决。再试一次!

于 2012-12-28T19:07:12.623 回答