我有两个数组,$ scope.messages和$ scope.aggregatedMessages。 $ scope.messages绑定到Firebase数组。 $ scope.messages有一个date属性,用于仅显示特定日期的消息。非常简单。添加新消息或用户更改日期时,我希望重新加载aggregatedMessages数组。
$scope.messages = $firebaseArray(ref.orderByChild("date").equalTo(date));
...用于将$ scope.messages数组与Firebase绑定。选择新日期时,将再次调用上述功能。
和
ref.on("value", function(value) {
...
});
...用于在发生变化时重建aggregatedMessages数组(我知道,应该使用child_added等等......我稍后将会这样做)。
现在,这不起作用,因为当$ scope.messages中添加了一个新项目时,Firebase不会调用我的回调函数(在ref.on中),$ scope.messages。$ add(... )做好工作并按照预期行事。
这种情况的最佳做法是什么?
答案 0 :(得分:0)
最佳做法是不重建firebaseArray,如果数据被添加到firebase ref,它们将自动同步。
$scope.messages = $firebaseArray(ref.orderByChild("date").equalTo(date));
$scope.messages.$ref().on('child_added', function(snap){
console.log(snap.key(), snap.val());
})
ref.push(data)
// > console will log the new data key and value if data.date == date
如果你必须重建firebaseArray,不要忘记在删除它之前调用$ destroy,告诉firebase不要再听ref和清除内存
$scope.messages.$destroy()
$scope.messages = $firebaseArray(ref.orderByChild("date").equalTo(aNewDate));