在选择 Firebase 数组的子集时不会调用 ref.on(...)



我有两个数组$scope。$scope.aggregatedMessages。美元的范围。消息被绑定到Firebase数组。美元的范围。消息具有日期属性,该属性用于仅显示来自特定日期的消息。非常简单。当添加新消息或用户更改日期时,我希望重新加载aggregatedMessages数组。

$scope.messages = $firebaseArray(ref.orderByChild("date").equalTo(date));

…用于绑定$作用域。使用Firebase的消息数组。当选择新的日期时,将再次调用上述函数。

ref.on("value", function(value) {
...
});

…是用来重建aggregatedMessages数组时的一些变化(我知道,应该使用child_added等代替…我以后会的。

现在,这不起作用,因为Firebase不调用我的回调函数(在ref.on)当一个新的项目被添加到$scope。$scope.messages.$add(…)是如何工作的

这种情况下的最佳实践是什么?

最佳实践是不要重新构建您的firebaseArray,如果数据被添加到firebaseArray 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));

相关内容

  • 没有找到相关文章

最新更新