我正在制作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 = '';
}
答案 0 :(得分:3)
$firebaseArray
对象仅对您初始化它的位置下的第一级子项起作用。所以你所看到的行为是"按设计工作"。
如果你想处理多级集合,你有两个选择(据我所知):
parentId
来手动构建多级列表我建议使用选项2,因为它更接近Firebase建议,以防止不必要的嵌套。见https://www.firebase.com/docs/web/guide/structuring-data.html