与this question相关,我需要能够从集合中获取元素作为Firebase引用,即给定$firebaseArray
我需要$firebaseObject
指向其中一个元素。与那个例子不同,我不能只是硬编码数组的路径并从那里带一个孩子,因为数组的位置会有所不同。我无法使用$firebaseArray.$getRecord()
或ng-repeat
后面跟array.$save()
提供的对象,因为我可能需要对此元素执行push()
。
所以我决定采用这种可重复使用的方法:
在服务中:
function selectElement(array, element) {
var obj = $firebaseObject(array.$ref().child(element.$id));
return obj;
}
在控制器中:
function onItemClicked(e) {
vm.selected = dataservice.selectElement(vm.observations, e);
}
在模板中:
<div class="list-item" ng-repeat="o in vm.observations" ng-click="vm.onItemClicked(o)">
selectElement
的第一行产生错误:array.$ref(...).child is not a function at Object.selectElement
此处array
包含您期望的所有属性,但是日志记录array.$ref()
会显示此混淆对象:
Y {k: Ji, path: P, n: Ce, pc: true}
这就是从创建数组时的样子。这里发生了什么以及如何使用此参考?还有另一种方法可以从阵列中获取有效的Firebase对象吗?