$firebaseArray 子记录在其子节点上没有 ID

$firebaseArray child records don't have IDs on their child nodes

我正在制作 angular-fire 待办事项列表的修改版本。本次修改包括制作子列表和子列表的子列表。

我的问题是,当我添加第一级子列表时,子对象没有我需要添加下一级子列表的 $id。

它们似乎没有常见的 firebase 属性,只有 "title" 和 "completed" 状态。

我不明白为什么我的 ng-repeat 没有给我更多信息,尤其是为什么它适用于顶级对象但不适用于更底层的对象。

原加:

 $scope.addTodo = function(theTodo) {
    var newTodo = theTodo.trim();
    if (!newTodo.length) {
        return;
    }
    $scope.todos.$add({
        title: newTodo,
        completed: false
    });
    $scope.newTodo = '';
    $scope.subtodo = false;
};

子列表添加:

$scope.addSubList = function(parent, toDo) {
    console.log(parent, toDo)
    var subRef = newRef.child(parent.$id)
    var newArray = $firebaseArray(subRef)
    var newTodo = toDo.trim();
    if (!newTodo.length) {
        return;
    }
    newArray.$add({title: newTodo,
        completed: false
    })
    $scope.sublistExists = true;
    $scope.newTodo = '';
}

$firebaseArray 对象仅在您初始化它的位置下的第一级子对象上发挥其魔力。所以你看到的行为是 "working as designed".

如果你想处理多级集合,你有两个选择(据我所知):

  1. 自己处理较低级别
  2. 将所有列表存储在一个级别上,然后通过在每个列表中保留 parentId
  3. 手动构建多级别

我建议使用选项 2,因为它更符合 Firebase 的建议以防止不必要的嵌套。参见 https://www.firebase.com/docs/web/guide/structuring-data.html