$ firebaseArray子记录的子节点上没有ID

时间:2015-06-01 02:01:55

标签: javascript angularjs firebase angularfire

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

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

他们似乎没有通常的firebase属性,只是“标题”和“已完成”状态。

我无法弄清楚为什么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 = '';
}

1 个答案:

答案 0 :(得分:3)

$firebaseArray对象仅对您初始化它的位置下的第一级子项起作用。所以你所看到的行为是"按设计工作"。

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

  1. 自己处理较低级别
  2. 将所有列表存储在一个级别上,然后通过在每个列表中保留parentId来手动构建多级列表
  3. 我建议使用选项2,因为它更接近Firebase建议,以防止不必要的嵌套。见https://www.firebase.com/docs/web/guide/structuring-data.html